我正在使用one()
方法触发一次操作:
$("#tabs .nav li a").one("click", function(){
//do something
});
这对每个链接都适用一次。我希望它只工作一次,并且仅对.nav li
内的所有链接起作用。例如,如果我点击.nav li a,我希望触发操作。如果我点击其他链接,我不再希望触发该功能。
你会怎么建议这样做?
答案 0 :(得分:5)
$("#tabs .nav li a").on("click.once", function(){
// do something
$("#tabs .nav li a").off("click.once");
});
这也使用自定义event namespace来避免意外删除元素中的其他click
事件。
答案 1 :(得分:3)
$("#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() {
// ...
});
答案 3 :(得分:0)
您可以使用unbind
或off
删除事件处理程序,如下所示:
$("#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');
在功能结束时。