我知道jquery .on()的使用和目的,因为我使用它。
但是我想知道这个脚本中$(document).on()vs $(element).on()之间的区别是什么:
{{1}}
他们之间有什么不同的表现吗?
答案 0 :(得分:10)
@Mukesh已经回答了主要的区别。 我会尝试再增加一件事。
当您在html文档中的元素(例如 div 或按钮)上单击(或任何其他事件)时,该点击事件将传播到父元素那个元素。所以如果你有这样的结构:
<div>
<table>
<tr>
<td>
<button>Click Me</button>
</td>
</tr>
</table>
</dvi>
然后点击按钮,该点击将传播到td,然后传播到tr,然后传播到表格,最后传播到文档本身。
现在假设您已在文档上注册了点击事件( $ document.on(&#39;点击&#39;,...))以及按钮( $(button.on(&#39;点击&#39;,...))),两者都会执行一些不同的操作。然后,如果单击该按钮,将执行相应的按钮操作,并且还将执行$(文档)的相应操作。
要防止按钮单击传播到文档本身,您需要对按钮单击处理程序执行操作(如stopPropagation等)。
答案 1 :(得分:8)
$(document).on('click','.btn-edit',function()
这会将click事件绑定到文档及其中的所有子元素。此方法称为委托事件处理。
$('#table-user').on('click','.btn-edit',function()
直接将click事件绑定到#table-user。直接在元素上捕获事件。