`$(document).on(“click”,“a”和`$(“a”)之间的区别。click(`

时间:2015-10-22 10:46:29

标签: javascript jquery

任何人都可以告诉我这两个脚本之间有什么区别,我不是javascript / jquery专家。

$(document).on("click", "a", function () {
    i = $(this).data("value");
    alert(i)
})

$("a").click(function () {
    i = $(this).data("value");
    alert(i)
});

3 个答案:

答案 0 :(得分:15)

$(document).on("click", "a", function () {将绑定绑定事件时不存在的a元素上的事件。这被称为event delegation

  

事件委托允许我们将单个事件侦听器附加到父元素,该元素将为匹配选择器的所有后代触发,无论这些后代现在是存在还是将来添加。

$("a").click(function () {只将事件绑定到DOM中存在的a元素。

答案 1 :(得分:3)

第一个给出event delegation,即它将事件与DOM中存在的元素绑定并满足选择标准+在绑定事件(满足选择标准)后在DOM中添加的任何元素将被绑定自动添加到DOM中。

虽然后者将事件与现有元素绑定。

Delegated events

  

委派事件的优势在于它们可以处理来自的事件   稍后添加到文档中的后代元素。通过   选择一个保证在当时存在的元素   委托事件处理程序附加,您可以使用委托事件   避免频繁附加和删除事件处理程序。

答案 2 :(得分:3)

第一个将检查文档上的每次点击,并检查它是否来自" a"标签,如果这样执行代码,这也将与动态创建的" a"标签

第二个只会为" a"执行代码。已经存在的元素 存在于页面上。