2012-03-22 7 views
0

このjQueryコードがあるとします。jQueryに委譲された要素にアクセスするにはどうすればよいですか?

$(document).delegate('a[title]', 'click', function(event) { 
     var txt = // href value of the link ; 
     alert("txt"); 
}) 

リンクのhref属性の値はどのようにして取得できますか? $(this)$(document)を参照するので、私は使用できません。

+5

いいえ、 '$(this)'は委任された要素を参照します。ドキュメントを読む。 http://api.jquery.com/delegate/ –

+0

oh .. woops:Oは私の宿題を済ませたか何かを試していたはずです。みんなありがとう。 – dangerChihuahua007

答えて

4

良好。

DEMO

//literally: bind to "document" a "click" handler for "a" 
$(document).on('click', 'a', function(event) { 
    var txt = this.href; //or $(this).attr('href'); 
    alert(txt); 
}) 

理想的に、あなたが影響を受けたいすべての要素の最も近い共通の親へのハンドラをバインドしたいと思います。 documentにバインドすることは、要素からの長距離呼び出しであり、重大なパフォーマンスの低下を招く可能性があります。 jQueryの1.7のよう


、.live()メソッドは推奨されています。 .on()を使用してイベントハンドラをアタッチします。 jQueryの古いバージョンのユーザーは、.live()よりも.delegate()を優先して使用する必要があります。

  • jQueryの)はjQueryの1.7、.delegate(のよう.delegate()

を置き換え.on()メソッドに置き換えられました。ただし、以前のバージョンでは、イベント委任を使用する最も効果的な方法が残りました。 1.7のよう

  • は、jQueryの柔軟な取り扱いのために.bind().on()を好む:jQueryの1.7のよう

、.on()メソッドにイベントハンドラを取り付けるための好ましい方法であります資料。以前のバージョンでは、.bind()メソッドはイベントハンドラを要素に直接取り付けるために使用されます。ハンドラは、jQueryオブジェクトの現在選択されている要素に接続されているため、これらの要素は.bind()の呼び出しが発生するポイントに存在する必要があります。より柔軟なイベントバインディングについては、.on()または.delegate()のイベント委任についての説明を参照してください。

+0

* ".delegate()'、 '.bind()'、 '。()'は廃止される予定ですので、 "*このソースはありますか? –

+0

@amnotiam更新 – Joseph

4

$(この)

クリックされたアンカーを指します。 .delegate().bind().live()は廃止されるためのjQuery(1.7以上)から使用.on()

関連する問題