我在网上搜索但我没有找到任何答案,因为这个“问题”不是关于.on()和.click()之间差异的常见问题.
使用jquery 2.1.3时,click函数是on的缩写.(“click”,handler)因此它应该在dom更改后触发函数(或wathever).
但这只有在我使用.on()时才有效.
为什么? (以下示例)
使用jquery 2.1.3时,click函数是on的缩写.(“click”,handler)因此它应该在dom更改后触发函数(或wathever).
但这只有在我使用.on()时才有效.
为什么? (以下示例)
$('#button1').click(function() { $('div').html("<p id="button2">Hello</p>"); }); $('#button2').click(function() { alert(0); //THIS DOESN'T WORK }); $(body).on("click","#button2",function() { alert(0); //THIS WORKS! });
解决方法
But this works only if I use .on().
首先,你应该意识到:
如果
$('#button2').click(function() { alert(0); });
紧接着
$('#button1').click(function() { $('div').html("<p id="button2">Hello</p>"); });
喜欢 :
$('#button1').click(function() { $('div').html("<p id="button2">Hello</p>"); $('#button2').click(function() { alert(0); }); });
然后它会工作.
你在最后一个代码中所做的事情是将处理程序附加到因为事件传播而正在工作的body元素.
你的代码正在工作beacuse on允许你做选择器匹配将单个处理程序附加到body元素.