现场和代表之间有什么不同

时间:2011-03-30 13:39:39

标签: javascript jquery

像标题所说的那样,这两个函数在jquery中:)

4 个答案:

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

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不是