2012-03-22 36 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/ – 2012-03-22 02:55:44

+0

哦.. woops:O應該做了我的功課或嘗試了一些東西。多謝你們。 – dangerChihuahua007 2012-03-22 03:08:34

回答

4

更好地使用來自jQuery(1.7+)的.on(),因爲.delegate(),.bind().live()將被棄用。

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用戶應優先使用.delegate(),而不要使用.live()。

在jQuery 1.7,.delegate()已經被。對()方法取代。然而,對於較早的版本,它仍然是使用事件委派的最有效手段。

  • 作爲1.7,jQuery的偏愛超過.on().bind()靈活的處理:

在jQuery 1.7中,。對()方法是事件處理程序的附連到所述優選的方法文件。對於早期版本,.bind()方法用於將事件處理程序直接附加到元素。處理程序被附加到jQuery對象中當前選定的元素上,所以這些元素必須存在於對.bind()的調用發生時。要獲得更靈活的事件綁定,請參閱.on()或.delegate()中的事件委託討論。

+0

*「因爲'.delegate()','.bind()'和'。()'將被棄用。」*你有這方面的資料嗎? – 2012-03-22 03:05:47

+0

@amnotiam更新 – Joseph 2012-03-22 03:16:03

4

$(本)

指點擊的錨。