答案 0 :(得分:4)
Googled - 根据jquery网站上的文档。
由于.live()方法处理 事件一旦传播到 文档的顶部,它不是 可以阻止直播传播 事件。同样,事件处理 .delegate()将始终传播到 它们所属的元素 委托;任何事件处理程序 它下面的元素已经有了 已被执行的时间 委托事件处理程序被调用。
$("table").delegate("td", "hover", function(){
$(this).toggleClass("hover");
});
等效于使用.live()编写的以下代码:
$("table").each(function(){
$("td", this).live("hover", function(){
$(this).toggleClass("hover");
});
});
答案 1 :(得分:1)
http://api.jquery.com/delegate
全部都在文档中。
$("table").delegate("td", "hover", function(){
$(this).toggleClass("hover");
});
等同于使用.live()
编写的以下代码:
$("table").each(function(){
$("td", this).live("hover", function(){
$(this).toggleClass("hover");
});
});
答案 2 :(得分:1)
“.live()”API的缺点是在<body>
元素上建立冒泡事件处理程序之前,不必要地从目标选择器构建jQuery对象。否则,您可以用“.delegate()”表示“.live()”:
$(something).live('click', func);
实际上与
相同$('body').delegate(something, 'click', func);
除了后者更有效率,因为在设置处理程序时,“something”选择器实际上不会应用于页面。
答案 3 :(得分:0)
只需阅读api文档。
委托期望选择器作为根元素,而live不是