$(document).on()和$(element)之间有什么区别.on()

时间:2017-01-24 05:51:53

标签: jquery

我知道jquery .on()的使用和目的,因为我使用它。

但是我想知道这个脚本中$(document).on()vs $(element).on()之间的区别是什么:

{{1}}

他们之间有什么不同的表现吗?

2 个答案:

答案 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。直接在元素上捕获事件。