我正在使用该one()
方法触发一次动作,如下所示:
$("#tabs .nav li a").one("click", function(){
//do something
});
这对每个链接都有效。我希望它只.nav li
对 .nav li a 中的所有链接起作用一次,并且一次,我希望该动作会触发。如果我单击不同的链接,我不再希望触发该功能。
你会如何建议这样做?
我正在使用该one()
方法触发一次动作,如下所示:
$("#tabs .nav li a").one("click", function(){
//do something
});
这对每个链接都有效。我希望它只.nav li
对 .nav li a 中的所有链接起作用一次,并且一次,我希望该动作会触发。如果我单击不同的链接,我不再希望触发该功能。
你会如何建议这样做?
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.
您可以使用事件委托并将其绑定到父级,就像.on()
:
$('#tabs').one('click', '.nav li a', function() {
// ...
});
演示:http: //jsfiddle.net/hDfFu/
您可以使用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
此处添加的内容,在删除已附加的事件时应始终使用它,以确保仅删除想要的事件;IE。不是您想要保留的第 3 方插件添加的事件。
试着把
$("#tabs .nav li a").unbind('click');
在函数的最后。