2014-09-21 130 views
2

我使用jQuery 2.0.3jQuery.on与家长和孩子选择VS只是孩子选择

的使用是有什么区别:

$(parentSelector).on("click", childSelector, function() {...}); 

$(childSelector).on("click", function() {...}); 

为什么我曾经想用前者而不是后者?

+0

第二个是相同的'$(SEL) .click(function(){...}';它没有使用'on()',事件委托的主要目的。请参阅ROX的答案。 – isherwood 2014-09-21 03:34:41

回答

2

第一个被称为事件委托,如果您childSelector元素添加到DOM

+1

感谢这些示例 - 它们使它更易于理解! – Andrey 2014-09-21 03:46:03

1

示例代码:

考虑一个表1000行。下面附加一个处理程序1000个元素:

$("#dataTable tbody tr").on("click", function() { 
    alert($(this).text()); 
}); 

这将工作,但如果我们添加行,我们不得不再次附上事件处理程序。

随着委派方法中,事件处理程序仅附接至tbody,事件仅必须冒泡从trtbody

$("#dataTable tbody").on("click", "tr", function() { 
    alert($(this).text()); 
}); 
+0

+1谢谢蒂莫西 - 我不知何故错过了这个例子,它也明确了这个区别。 – Andrey 2014-09-21 04:56:07