1

我正在使用该one()方法触发一次动作,如下所示:

$("#tabs .nav li a").one("click", function(){ 
       //do something
});

这对每个链接都有效。我希望它只.nav li对 .nav li a 中的所有链接起作用一次,并且一次,我希望该动作会触发。如果我单击不同的链接,我不再希望触发该功能。

你会如何建议这样做?

4

5 回答 5

5

Set the original event with .on() then use .off() to remove it:

$("#tabs .nav li a").on("click.once", function(){ 
    // do something
    $("#tabs .nav li a").off("click.once");
});

This also uses a custom event namespace to avoid accidentally removing other click events from the elements.

于 2013-06-12T15:18:23.700 回答
3

you can use .on() and .off() for this

$("#tabs .nav li a").on("click", function(){ 
    //do something
    $("#tabs .nav li a").off('click');
});
于 2013-06-12T15:18:21.887 回答
2

您可以使用事件委托并将其绑定到父级,就像.on()

$('#tabs').one('click', '.nav li a', function() {
    // ...
});

演示:http: //jsfiddle.net/hDfFu/

于 2013-06-12T15:18:59.913 回答
0

您可以使用unbindoff删除事件处理程序,如下所示:

$("#tabs .nav li a").on("click.myIdentifier", function(){ 
    //do something

    // unbind event from other elements:
    $("#tabs .nav li a").off('click.myIdentifier');
});

请注意.myIndentifier此处添加的内容,在删除已附加的事件时应始终使用它,以确保仅删除想要的事件;IE。不是您想要保留的第 3 方插件添加的事件。

于 2013-06-12T15:18:51.170 回答
0

试着把

$("#tabs .nav li a").unbind('click');

在函数的最后。

于 2013-06-12T15:20:45.683 回答