我有一些动态创建的按钮:
<input type='button' id='remove_"+ii+"' class='removeItem' value='remove'>
ii的价值无关紧要。
我正在尝试聆听任何这些按钮被点击并执行某些操作:
$(document).on('click',$('.removeItem'),function(){
alert($(this).attr('id'));
});
然而,警报正在给我&#34; undefined&#34;。至少我希望看到&#34;删除_&#34; ..
我错过了什么?
答案 0 :(得分:2)
我认为问题在于您注册事件处理程序的方式。在您尝试使用事件委派时,您将传递jQuery对象作为第二个参数。
对于事件委托,您需要将字符串选择器作为第二个参数传递给.on()
$(document).on('click', '.removeItem',function(){
alert($(this).attr('id'));
});
演示:Fiddle
为什么?
因为on()方法允许传递一个对象作为其参数,它将被传递给event.data
属性中的处理程序,所以你的处理程序而不是使用事件委托给{{1}添加一个处理程序将事件数据作为jQuery对象的对象。所以处理程序中的document
指的是this
没有document
属性的对象
演示:Fiddle