我试图了解使用jQuery .on()方法的直接事件处理程序和委托事件处理程序之间的这种特殊区别。具体来说,本段最后一句:
当
selector
提供 a 时,事件处理程序被称为delegated。当事件直接发生在绑定元素上时,不会调用处理程序,而只会调用与选择器匹配的后代(内部元素)。jQuery 将事件从事件目标冒泡到附加处理程序的元素(即,从最内到最外的元素),并为沿该路径匹配选择器的任何元素运行处理程序。
“为任何元素运行处理程序”是什么意思?我制作了一个测试页来试验这个概念。但是以下两种构造都会导致相同的行为:
$("div#target span.green").on("click", function() {
alert($(this).attr("class") + " is clicked");
});
或者,
$("div#target").on("click", "span.green", function() {
alert($(this).attr("class") + " is clicked");
});
也许有人可以参考一个不同的例子来澄清这一点?谢谢。