使用jQuery单击一次元素

时间:2013-06-12 15:16:24

标签: javascript jquery

我正在使用one()方法触发一次操作:

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

这对每个链接都适用一次。我希望它只工作一次,并且仅对.nav li内的所有链接起作用。例如,如果我点击.nav li a,我希望触发操作。如果我点击其他链接,我不再希望触发该功能。

你会怎么建议这样做?

5 个答案:

答案 0 :(得分:5)

使用.on()设置原始事件,然后使用.off()将其删除:

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

这也使用自定义event namespace来避免意外删除元素中的其他click事件。

答案 1 :(得分:3)

您可以将.on().off()用于此

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

答案 2 :(得分:2)

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

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

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

答案 3 :(得分: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,您在删除附加的事件时应始终使用这些{1}},以确保您只删除了您想要的事件;即。不是由您想保留的第三方插件添加的事件。

答案 4 :(得分:0)

尝试放

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

在功能结束时。