我想处理动态创建的元素上的click事件,并且只能使用this
选择。这是我的代码:
$.fn.checkbox = function(){
return this.each(function(){
$this = $(this)
$(document).on('click', this, function(){
// My code here
})
})
}
但是这段代码似乎不起作用。知道我该怎么做吗?
答案 0 :(得分:1)
如果所有,您必须引用该元素this
,那么您仍然坚持使用普通(非委托)事件处理程序。但是,这不是问题,因为元素在代码运行时已经存在。我们知道这一点,因为您有一个参考,如果它不存在,您就无法参考它。
但是,您正在尝试在jQuery插件函数中执行此操作,在这种情况下,该上下文中的this
实际上是一个jQuery对象。这就是为什么您可以在问题中的代码中调用this.each(...);
的原因。要绑定事件处理程序,您可以执行以下操作:
this.on('click', function(e) {
// your event handler code here
});
在该处理程序函数的上下文中,this
将引用所单击的元素,因此它与您在this
上调用的.on()
不同。