jQuery:“.off()”是否与“.die()”具有相同的限制

发布于 2024-12-14 10:07:00 字数 208 浏览 1 评论 0原文

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

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

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

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

I see in the documentation for .die() it says this:

In order for .die() to function correctly, the selector used with it must match exactly the selector initially used with .live().

Does the new method in jQuery 1.7 have this same limitation*?

*not actually sure if it's considered a limitation or a feature

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

猫七 2024-12-21 10:07:00

事实上限制仍然存在。

现场演示的限制

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

$(".unbind").click(function(){
    $(".clone,.somethingelse").die("click");
});

进行演示

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

$(".unbind").click(function(){
    $("body").off("click",".clone");
});

演示的限制

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

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

如您所见,您将需要指定相同的选择器就像你对现场所做的那样。

The limitation is in fact still there.

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");
});

As you can see, you will need to specify the same selector as you did with live.

最近可好 2024-12-21 10:07:00

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

Yes and no. Calling .off will need to mimic the syntax of .live, however, the selector argument is not required. Calling .off() for all click events on a particular element will unbind all click events, including ones that are delegated. If you only wanted to remove a particular delegated event, or only delegated events, you will still need to provide the selector for that delegated event or all other events will be removed too.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文