【问题标题】:jQuery: Does `.off()` have the same limitations as `.die()`jQuery:`.off()` 是否与 `.die()` 有相同的限制
【发布时间】:2011-11-07 21:11:09
【问题描述】:

我在.die() 的文档中看到它是这样说的:

为了使 .die() 正常工作,与它一起使用的选择器必须与最初与 .live() 一起使用的选择器完全匹配。

jQuery 1.7 中的新方法是否有同样的限制*?

*实际上不确定它是否被视为限制或功能

【问题讨论】:

    标签: jquery jquery-1.7


    【解决方案1】:

    限制实际上仍然存在。

    Limitation with live demo

    $(".bind").click(function(){
        $(".clone").live("click",function(){
            $(this).clone().insertAfter(this);
        });
    });
    
    $(".unbind").click(function(){
        $(".clone,.somethingelse").die("click");
    });
    

    working on demo

    $(".bind").click(function(){
        $("body").on("click",".clone",function(){
            $(this).clone().insertAfter(this);
        });
    });
    
    $(".unbind").click(function(){
        $("body").off("click",".clone");
    });
    

    Limitation with on demo

    $(".bind").click(function(){
        $("body").on("click",".clone",function(){
            $(this).clone().insertAfter(this);
        });
    });
    
    $(".unbind").click(function(){
        $("body").off("click",".clone,.somethingelse");
    });
    

    如您所见,您需要指定与 live 相同的选择器。

    【讨论】:

      【解决方案2】:

      是和不是。调用 .off 需要模仿 .live 的语法,但是,选择器参数不是必需的。为特定元素上的所有点击事件调用 .off() 将取消绑定所有点击事件,包括委托的点击事件。如果您只想移除特定的委托事件,或仅移除委托事件,您仍需要为该委托事件提供选择器,否则所有其他事件也将被移除。

      【讨论】:

        猜你喜欢
        • 2010-09-13
        • 2014-02-24
        • 2014-06-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-07-31
        相关资源
        最近更新 更多