所以,任何人都知道这有什么区别:
$(document).on("click", "sometag", function () {
});
和
$("sometag").on("click", function () {
});
...
答案 0 :(得分:2)
第一个是 event delegation
事件委托允许我们将单个事件侦听器附加到父元素,该元素将为匹配选择器的所有后代触发,无论这些后代现在是存在还是将来添加。
$(document).on("click", "sometag", function () {
});
正常点击:将一个或多个事件的事件处理函数附加到所选元素。
$("sometag").on("click", function () {
});
示例代码
HTML
<buton>on normal click
</button>
<强> JS 强>
$("button").on("click", function () { // it does not work dynamically created element,only static (when dom is loaded )
$("body").append("<div>delegatin</div>");
alert("normal");
});
$("body").on("click", "div", function () { // it will work dynamically created dom
alert("delegation");
});
**
**
答案 1 :(得分:0)
代码中的第二个称为委托事件处理程序。
在其tbody中包含1,000行的数据表中,此示例将处理程序附加到1,000个元素:
$( "#dataTable tbody tr" ).on( "click", function() {
alert( $( this ).text() );
});
委托事件方法只将一个事件处理程序附加到一个元素tbody,而事件只需要冒出一个级别(从点击的tr到tbody):
$( "#dataTable tbody" ).on( "click", "tr", function() {
alert( $( this ).text() );
});
您可以阅读更多here