13

Developers Toolsに組み込まれているIE8を初めて使用した後、jQueryがいくつかの要素に属性を付加していることに気付きました: alt text http://thebe.jtan.com/~vince/stack/jquery.PNG

私はこれまでこれに気づいたことがありません。実際、これはFirebugには表示されません...IE8開発者ツールで初めて表示されます。jQueryがこれを何に使用するのか、そしてなぜそれがfirebugに隠されているのか誰かが知っていますか?

4

4 に答える 4

14

jQueryソースdataは非常に読みやすく、関数が 何をしているのかを見ることができます。

要約する:

  • jQueryには「expando」という変数があります。'jQuery'+(+new Date)
  • jQueryにはuuid、「1」で始まる別の変数があります。
  • jQuery.cache空のオブジェクトです
  • HTML要素/オブジェクトの「データ」を設定/取得するとexpando、オブジェクトのプロパティを使用して、参照がjQuery.cache次のように格納されます。

    //要素のキャッシュIDを取得するか、新しいキャッシュIDを作成します。
    var id = elem [expando] || (elem [expando] = uuid ++);
    //要素のキャッシュを取得するか、作成します。
    var data = jQuery.cache [id] || (jQuery.cache [id] = {});
    

  • イベントハンドラーは、この内部オブジェクトのeventsおよびプロパティに格納されます。handledata

したがって、を使用して割り当てられる内部的にすべてのプロパティは.data()、HTMLのこの「expando」属性を使用して、キーをjQueryの内部データキャッシュに格納します。jQueryイベントハンドラーもこの同じキャッシュに保存されます。に割り当てられた数値expandoは、jQueryキャッシュオブジェクト内のその場所を参照するインクリメントカウンターです。

于 2010-05-03T20:18:00.080 に答える
4

jQueryはこの「拡張」を使用して、データとイベントをオブジェクトにバインドします。データとイベントのキャッシュと連動しているようです。しかし、もっと詳細な説明を聞きたいです。

于 2010-05-03T20:02:07.510 に答える
0

その中にjqueryデータオブジェクトも見たので、それがfirebugに隠されているとは思えません。

jQueryまたは使用しているプラ​​グインは、さまざまなブラウザー固有のバグ/欠点の修正/回避策としてIEに追加するだけだと思います。

于 2010-05-03T19:46:48.550 に答える
0

jQueryの.html()メソッドを使用してHTMLの文字列を検索する場合は、そのHTMLにイベントが登録されている要素が含まれていないかどうかに注意してください。

整形式のXMLスニペットを.html()に依存しないでください。

私の手っ取り早い解決策は、ビジネスの順序を変更することでした。データが送信された後、jQueryイベントバインディングを実行しただけです。それで、髪を引き裂くのに費やした時間の観点から、難しい教訓を学びましたが、それでも重要な教訓でした。

1.3.1を使用していると思いますが、この問題は後のバージョンで修正されています。だから、更新するだけで、おそらく大丈夫です。

于 2010-05-03T20:06:00.247 に答える