2009-06-12 8 views
1

私はクライアント側のxslt変換を使用してajax xml応答を htmlに変換するアプリケーションを作成しています。変換が正常に動作し、次のスニペット、使用して 達成される -documentFragment添付ノードでjqueryのfindメソッドを使用

transform:function(xml){ 
      if (window.XSLTProcessor){ 
        var xsltProcessor = new XSLTProcessor(); 
        xsltProcessor.importStylesheet(Xmer.xsldoc); 
        var outputXHTML = xsltProcessor.transformToFragment(Xmer.makeXml(xml), document); 
        document.getElementById('tree').appendChild(outputXHTML.cloneNode(true)); 
      } 
      else if(window.ActiveXObject){ //Internet Explorer 
        var d=Xmer.makeXml(xml); 
        var outputXHTML = (d).transformNode(Xmer.xsldoc); 
        document.getElementById('tree').innerHTML=outputXHTML; 
      } 
    } 

をしかし、私はjQueryのfindメソッドを使用して挿入 タグを処理しようとすると、問題がFFに遭遇しました。私は上記のコードで挿入された特定のクラス名を持つすべてのdivを でフェッチしようとしています。次 を使用して -

var d=$document.find('div.pointer'); 
    alert ($('div.pointer').length); 
    alert (d.length); 

が、上記の警告は常に "0" の長さを返します。 IEでは同じコードが で動作します。私はjQuery 1.3.2を使用しています。

上記にさらに追加するには、私はdocumentFragments上のいくつかの研究を行なったし、 はhttp://ejohn.org/blog/dom-documentfragments/#comment-319149 上で、次の を見つけました(この場所に到達するために、「コメントの表示」をクリックする必要があります) -

「#明白な、時には見落とさ:フラグメントは自己完結型です これはフラグメントが外部のオブジェクトへのアクセスを持たないことを意味します(つまり、メイン文書の一部) (クラス属性)が要素に設定されていてもそのCSSクラスによって設定されたり、変更されたプロパティについては、 ベースのクエリを実行することはできません。基本的には、クラスの属性にクラスが設定されている場合、フラグメントの外側に定義されている場合は、 は単純なラベルになります。

です。つまり、フラグメント内の要素を検索することはサポートされていません。

対応可能な回避策はありますか?

私はこれらの行に沿ったものが先に で議論されているとお詫び申し上げます。

おかげで、ここで アミット

答えて