2个jquery代码之间的区别

时间:2014-09-05 04:44:20

标签: javascript jquery

所以,任何人都知道这有什么区别:

$(document).on("click", "sometag", function () {

});

$("sometag").on("click", function () {

});

...

2 个答案:

答案 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");
});

**

DEMO

**

答案 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