-1

更新:質問を編集して、さらに情報を追加しました。

私のアプリは、ブラウザーでXMLデータを直接表示します。ここで想定できるクライアント側のXSLT処理は、薄いHTMLラッパー内のID変換にすぎないと想定できます。

<xsl:output method="xml" indent="no" encoding="utf-8" />

<xsl:template match ="/">
  <html xmlns="http://www.w3.org/1999/xhtml" >
    <head>

    </head>
    <body>

      <xsl:template match="@*|node()">
        <xsl:copy>
           <xsl:apply-templates select="@*|node()"/>
        </xsl:copy>
      </xsl:template>

    </body>
  </html>
</xsl:template>

jQuery 1.8.3では、これは

$("*[target]").click(function (event) {
    alert("click");
});

@target属性を持つ要素を選択します(または選択する必要があります)。

これはIEとChromeで正常に機能しますが、Firefoxでは、XSLT出力を「html」に変更しない限りjQueryは何も選択しません。これにより、他のことが混乱します。

Firefoxで、jQueryに非HTMLのXML要素を選択させる正しい方法は何ですか?または(同じことを別の言い方で言うかもしれませんが)jQueryにカスタムHTML要素を選択させる正しい方法は何ですか?

更新:問題の原因が見つかりました。セレクターは$(document).ready()内にあり、FirefoxのXSLT(output ='xml')でスタイル設定されたXMLドキュメントでは起動しないため、選択しません。同じ問題を抱えている他の人:http://forum.jquery.com/topic/document-ready-with-xslt-in-xhtml

それを起動させるためのパラメーターとコード順序の組み合わせが見つかりませんでした。これまでの私の回避策は、$(document).ready()の代わりに$(window).load()を使用することです。

その他の更新このためのjQueryバグレポート#13193があります。http://bugs.jquery.com/ticket/13193

4

1 に答える 1

0

jQueryコードをラップする

$(window).load(function(){
    // jQuery bindings here
});

それ以外の

$(document).ready(function(){
    // jQuery bindings here
});

これにより、jQueryバインディングの可用性が遅れますが、作成されます

jQueryチームはこれをバグとして受け入れました。http://bugs.jquery.com/ticket/13193

$(document).readyバグが修正されたら、に切り替えます。

于 2013-01-14T03:34:36.360 に答える