jQuery:`.off()`与`.die()`有相同的限制

时间:2011-11-07 21:11:10

标签: jquery jquery-1.7

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

  

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

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

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

2 个答案:

答案 0 :(得分:4)

事实上,这种限制仍然存在。

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时相同的选择器。

答案 1 :(得分:0)

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