我正在尝试理解使用jQuery .on()方法时直接事件处理程序和委托事件处理程序之间的特定差异。具体来说,是这段话的最后一句:
当提供了一个
选择器
时,事件处理程序称为委托。当事件直接发生在绑定元素上时,处理程序不会被调用,而只会应用于与选择器匹配的后代元素。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");
});
也许有人可以引用不同的例子来阐明这一点?谢谢。