使用jquery为动态创建的特定元素添加事件侦听器
我正在使用jquery创建动态元素,并尝试绑定元素的侦听器。 通过绑定侦听器使用
$('#div11').on('click',$('#textbox31'),function(e){showPopupImage(e);}); $('#div11').on('click',$('#textbox32'),function(e){alert('hi');});
函数,即使我指定要绑定的特定字段,它也会向后代添加监听器。
请告诉我处理我的情况的好方法。
问题是您没有为on
函数指定正确的参数。 如果查看JQuery文档,则使用以下函数重载:
.on(events [,selector] [,data])
您指定的部分不正确是selector
参数。 此参数需要选择器字符串,而不是JQuery对象。
以下将有效:
$('#div11').on('click','#textbox31',function(e){showPopupImage(e);}); $('#div11').on('click','#textbox32',function(e){alert('hi');});
请注意,我已将$('#textbox31')
替换$('#textbox31')
'#textbox31'
。
这是一个工作示例 ,您将看到click事件未应用于textbox33
和textbox34
试试吧 :
$('#div11').on('click', '#textbox31',function(e){ showPopupImage(e); }); $('#div11').on('click', '#textbox32', function(e) { //do something });
使用.on()可以定义一次函数,它将为任何动态添加的元素执行。