2013-07-19 22 views
1

我在jQuery 1.7.2中使用.on()綁定事件的代理功能,當然,this的上下文是委託選擇器,而不是觸發事件的元素從。我需要從被點擊的元素訪問this。我知道我可以使用委託(父)選擇器的this來搜索它,但必須有一個更清晰的方法。jquery .on()上下文當委託

$('#wrap').on('click', 'button', function(){ 
    console.log($(this)) //returns #wrap, not button 
}); 

澄清

的問題是,我經過一個jQuery對象作爲第二個參數,見例如

http://jsfiddle.net/RobertSheaO/yVbZe/

+0

它應該返回'button'。 – Barmar

+1

我無法重現您的問題:http://jsfiddle.net/eF3W9/ –

+1

我打電話給BS。 http://jsfiddle.net/vrPDv/ –

回答

2

你的小提琴是從問題的不同,而不同的是重大。在撥弄你寫道:

var wrap = jQuery('#wrap'), 
    removeButton = jQuery('button'); 

wrap.on('click', removeButton, function(){  
    console.log(jQuery(this)); 
}); 

問題是removeButton是一個空的jQuery集合,因爲當執行的任務不存在的按鈕。

.on()委託給動態添加的元素時,您必須提供字符串作爲選擇器參數。