2

私はpie.js(http://css3pie.com/)を使用して、ie6+でcss3を使用できるようにします。document.readyにpie.jsを適用します:

 $(document).ready(function(){
        if (window.PIE) {
            $('.vexClass, #vexId').each(function(){
                PIE.attach(this);
            });
        }

    });

私の問題は、domが変更されたときに、pie.jsを適用した要素が適切にレンダリングされないため、domが変更されたときに、OnSubtreeModifiedを使用して変更されたセクションに対してのみpie.jsを適用する関数をロードする必要があることです。または別のテクニック...たとえば、domがロードされたときに表示されるパネルがあります。そのパネルには、pie.jsを適用するボタンやその他の要素を含む別のパネルを拡張するボタンがあります。パネルpie.jsを適用したすべての要素は正常にレンダリングされますが、展開されたパネルの要素pie.jsは適用されません:| では、拡張パネル用にdomが変更されたときに、そのpie.jsをどのように挿入できますか?

ありがとう。

4

3 に答える 3

1

Ajax呼び出しからデータを取得しますか?その場合は、コールバックにパイを追加する必要があります。ある時点で持っていないものに何かを追加する可能性はありません(少なくともafaik)。
コールバックにパイを追加する必要がある場合は、そのための別の関数を作成する必要があります。関数にdomノードを指定すると、pieが適用されているかどうかをすべての子ノードでチェックし、適用されていない場合はチェックします。

于 2012-11-01T15:04:04.520 に答える
1

DOMSubtreeModified対象としている古いバージョンのIEはこれをサポートしていないため、このイベントを使用することはできません。ただし、次の回答を使用してこれを回避できます。DOMの変更を次のスクリプトと一緒に検出します。

$(document).ready(function () {

    function applyPIE() {
        if (window.PIE) {
            $('.vexClass, #vexId').not('[data-pie=attached]').each(function(){
                PIE.attach(this);
                $(this).attr('data-pie', 'attached');
            });
        }
    }

    onDomChange(function(){ 
        alert('document updated, applying PIE now');
        applyPIE();
    });

    $('#link').click(function () {           
        $('body').append('<h4>added content</h4>');
    });

    applyPIE();

});

applyPIE()ドキュメントの準備ができて、DOMが変更されるたびに呼び出されるローカル関数を作成します-すでに処理された要素を除外します。.vexClass, #vexIdニーズに合わせてセレクターのセットを拡張することをお勧めします。

JSFiddle: http: //jsfiddle.net/hongaar/y3FaM/1/

于 2012-11-05T17:42:30.180 に答える
1

ウィケットを使用している場合、それを行う唯一の方法はWicket.Ajax.registerPostCallHandler 、プロジェクトにこれを追加することです。ajaxリクエストが実行されるたびに、パイが適用されます。

window.document.ready = function() {
    Wicket.Ajax.registerPostCallHandler(pieStarter);
}
function pieStarter() {

    if (window.PIE) {
        go();
    }
}
function go() {
    $(''.vexClass, #vexId'').each(function() {
        PIE.attach(this);
    });
}
于 2012-11-07T11:43:08.657 に答える