JQuery替换live::`delegate`或`on`

JQuery替换live::`delegate`或`on`,jquery,jquery-on,jquery-delegate,Jquery,Jquery On,Jquery Delegate,根据jQueryAPI描述:live在最新版本中被完全删除。但它在我们的项目中被广泛使用。例如: $('div.collapsed').live('mouseover', function () { TBD.GENERAL.showLoginOther(this); }); $(".info_bar .filter a, .pagination a").live("click", function () { TBD.DHTML.shadeWithLoading($(t

根据jQueryAPI描述:live在最新版本中被完全删除。但它在我们的项目中被广泛使用。例如:

$('div.collapsed').live('mouseover', function () {
        TBD.GENERAL.showLoginOther(this);

});

$(".info_bar .filter a, .pagination a").live("click", function () {
    TBD.DHTML.shadeWithLoading($(this).data('container-id'));
    $.getScript(this.href);
    return false;
});

$("form[loading-effect]").live('ajax:before', function () {
    $(this).find('.button_panels, .loading_panels').toggle();
});

.........
等等

现在,如果我想使用最新的jquery,那么正确的live替代方案是什么?委派还是继续

期待一点解释。提前感谢

因为
.live()
已被弃用,您最好使用
.on()
像这样

$('div.collapsed').on('mouseover', function () {
或者可以像这样使用

$(document).on('mouseover','div.collapsed', function () {
因为

  • 不能将.live()用于可重用的小部件
  • stopPropagation()不适用于live
  • live()比较慢
  • live()不可链接
  • 并且.on()方法提供附加事件处理程序所需的所有功能。

    因为
    不推荐使用.live()
    ,所以您最好使用
    .on()
    这样的方法

    $('div.collapsed').on('mouseover', function () {
    
    或者可以像这样使用

    $(document).on('mouseover','div.collapsed', function () {
    
    因为

  • 不能将.live()用于可重用的小部件
  • stopPropagation()不适用于live
  • live()比较慢
  • live()不可链接

  • 并且.on()方法提供附加事件处理程序所需的所有功能。

    为什么不
    委托
    ?或者为什么要打开
    。解释将受到赞赏,它们都不等同于live()。Live将事件处理程序附加到文档级别:
    $(document).on('mouseover','div.collapsed',function(){…})
    这两个都与您所说的相同,我认为您的编辑现在更好了;)+1但是您应该删除('mouseover',function(){…})上的$('div.collapsed')。这会带来混淆,因为它不是委托事件,在这里,它相当于.bind(),为什么不
    委托
    ?或者为什么要打开
    。解释将受到赞赏,它们都不等同于live()。Live将事件处理程序附加到文档级别:
    $(document).on('mouseover','div.collapsed',function(){…})
    这两个都与您所说的相同,我认为您的编辑现在更好了;)+1但是您应该删除$('div.collapsed')。在('mouseover',function(){…})上,这会带来混淆,因为它不是委托事件,在这里,它相当于.bind()。您可以在文档中找到最好的解释,我认为最简单的解决方案是不更新jQuery版本,除非您有其他方法,这样做的具体原因。我已经决定升级:)您可以在文档中找到最好的解释,我认为最简单的解决方案是不更新您的jQuery版本,除非您有这样做的其他特定原因。我已经决定升级:)