任何人都可以告诉我这两个脚本之间有什么区别,我不是javascript / jquery专家。
$(document).on("click", "a", function () {
i = $(this).data("value");
alert(i)
})
$("a").click(function () {
i = $(this).data("value");
alert(i)
});
答案 0 :(得分:15)
$(document).on("click", "a", function () {
将绑定绑定事件时不存在的a
元素上的事件。这被称为event delegation。
事件委托允许我们将单个事件侦听器附加到父元素,该元素将为匹配选择器的所有后代触发,无论这些后代现在是存在还是将来添加。
而$("a").click(function () {
只将事件绑定到DOM中存在的a
元素。
答案 1 :(得分:3)
第一个给出event delegation,即它将事件与DOM中存在的元素绑定并满足选择标准+在绑定事件(满足选择标准)后在DOM中添加的任何元素将被绑定自动添加到DOM中。
虽然后者将事件与现有元素绑定。
委派事件的优势在于它们可以处理来自的事件 稍后添加到文档中的后代元素。通过 选择一个保证在当时存在的元素 委托事件处理程序附加,您可以使用委托事件 避免频繁附加和删除事件处理程序。
答案 2 :(得分:3)
第一个将检查文档上的每次点击,并检查它是否来自" a"标签,如果这样执行代码,这也将与动态创建的" a"标签
第二个只会为" a"执行代码。已经存在的元素 存在于页面上。