我正在尝试使用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");
});
也许有人可以参考一个不同的例子来澄清这一点?谢谢。