2011-09-08 2 views

答えて

3

使用した場合

+0

これは私が考えたものです。グッドオールjQuery。 – mattsven

+1

ちょっとしたこととして、$( 'yourelement')。data()を実行すると、特定の要素に関連付けられたイベントを見ることができます。イベントの下では、それが聞いているイベントを見ることができます。 –

0

jQueryのは、リスナーを設定します。

特定のjQuery要素のリスナーを追加します。

.change(), .keyup(), ...などと同じです。

0

要素を変更しません。

jQueryの() - も$()のように書くことができる - 提供セレクタに一致する要素にDOM を検索し、これらの要素を参照する新しい jQueryオブジェクトを作成

0

$("myElement").click(...) calls: $("myElement").bind('click', ...) 
which then calls: jQuery.event.add(...) 
which ultimately does either elem.addEventListener(...) or elem.attachEvent(...) 

だから、我々は我々がaddEventので、期待通りである(onclick属性を設定されていないことを決定的に言うことができます:jQueryの1.6.2のソースを見てみますリスナーはより拡張性があります)。

しかし、深い内部の.click()関数をステップ実行すると、属性はDOMオブジェクトに追加されます。です。これはjQueryのデータ関数に関連しており、event.add(...)から呼び出されるjQueryのデータ関数のこのコード部分に関連しています。 jQueryがDOM参照を保持せずに(メモリリークを引き起こす可能性のある)どのオブジェクトであるかを追跡するために使用するGUID識別子のようです。その属性を追加するコードはここにある:

if (!id) { 
     // Only DOM nodes need a new unique ID for each element since their data 
     // ends up in the global cache 
     if (isNode) { 
      elem[ jQuery.expando ] = id = ++jQuery.uuid; 
     } else { 
      id = jQuery.expando; 
     } 
    } 

だから、結論では、jQueryのは.onclick属性は触れていないが、最初のイベントハンドラを設定する際には、DOMオブジェクト上の少なくとも1つの他の属性を設定しています。

+0

なぜ属性を設定すると思いますか? – Neal

+0

あなたは私の意味を誤解していました(これは書かれていませんでしたが、私は今変更されています)。私はonclick属性を設定することを期待していません**でした。しかし、それは明らかになったように、DOMオブジェクトに対して別の属性を設定します。 – jfriend00

関連する問題