事件分配样式之间有什么区别? 例如:
$("button","#container").click(function(){
console.log("Usage 1");
});
$("#container").click("button",function(){
console.log("Usage 2");
});
$("#container button").click(function(){
console.log("Usage 3");
});
$(document).click("#container button",function(){
console.log("Usage 4");
});
答案 0 :(得分:1)
$("button","#container").click(function(){
console.log("Usage 1");
});
这会查找button
内的#container
元素,并在找到的每个click
元素上附加button
个事件处理程序。
$("#container").click("button",function(){
console.log("Usage 2");
});
这将在click
上附加#container
事件处理程序并传递"按钮"字符串作为事件数据到click
事件处理程序。
$("#container button").click(function(){
console.log("Usage 3");
});
这与您的第一个代码段相同。
$(document).click("#container button",function(){
console.log("Usage 4");
});
这将在整个click
附加document
事件处理程序并传递" #container按钮"字符串作为事件数据到click
事件处理程序。
答案 1 :(得分:0)
jQuery文档没有指定语句2和4,所以我们可以忘记它们。对于语句1和3,它们将单击处理程序绑定到各个按钮 - 它们都实现相同的功能。
我的建议是利用事件委托:
$( container ).on( 'click', 'button', function () { ... });
其中container
是对#container
元素的引用。 (您希望在页面加载时获取对静态元素的引用,这样您就不必在每次需要时都查询它们。)