取消绑定所有事件,但不解除已经发生事件的人

时间:2017-02-02 18:05:03

标签: javascript jquery

这有点棘手,我希望这是可以做到的。基本上我想要实现的是:如果有人点击页面或任何按钮,它需要调用一个函数。但是,它只需要调用该函数ONCE。事件被触发后,它应取消绑定相同的事件,但它还应该保留页面上的所有其他事件

https://jsfiddle.net/1wrmqbb0/

$("body, body *").on("click keyup change", function() {
    console.log("CLICKED ONCE");
    $(this).unbind("click keyup change");
});

当单击身体或身体中的任何其他元素时,它应该调用函数/ console.log或类似的东西。一旦它完成了,它应该再解开它们,因为我只希望这发生一次。

$("button").on("click", function() {
    console.log("BUTTON HAS BEEN CLICKED");
});

但是,当我执行上述操作时,它会取消绑定<body>的所有子项,这意味着我的按钮中的on("click")也将被取消绑定。

如何让我的按钮不受约束? 注意:我有很多元素,很多点击处理程序,等等。我不想列出它们中的每一个或之后再将它们全部绑定。做这样的事情会非常好:

var firstTimeOnly = $("body, body *").on("click keyup change"....;
firstTimeOnly.not(":those-who-has-an-event-already").unbind("all");

(是的,我知道这将是一个很棒的选择器)

0 个答案:

没有答案