委托时的jquery .on()上下文

时间:2013-07-19 20:03:05

标签: jquery binding delegates this bind

我在jQuery 1.7.2中使用.on()绑定事件的委托功能,当然this的上下文是委托选择器,而不是触发事件的元素。我需要从被点击的元素中访问this。我知道我可以使用委托(父)选择器的this来搜索它,但必须有一个更清洁的方式。

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

澄清

问题是我传递了一个jQuery对象作为第二个参数,参见示例

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

1 个答案:

答案 0 :(得分:2)

你的小提琴与问题不同,这种差异很大。在你写的小提琴中:

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

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

问题是removeButton是一个空的jQuery集合,因为执行该赋值时该按钮不存在。

.on()委托给动态添加的元素时,必须提供一个字符串作为选择器参数。