首先单击event.preventDefault()然后删除

我有默认的锚,如果它有一个类subnav,如这个小提琴所示。

我只希望第一次单击禁用此function,然后我希望恢复正常的锚function。 做这个的最好方式是什么? 我尝试了涉及下面代码的东西,但这似乎不起作用?

$(this).unbind(event.preventDefault()); 

也许像这个伪代码?

 if (click count === 0 ) { event.preventDefault(); } 

或者有更好的方法来解决这个问题吗?

您可以将false传递给one() :

 $(".subnav a").one("click", false); 

传递false而不是处理程序等同于传递返回false的处理程序,有效地停止事件的传播并阻止其默认行为。

这在bind()的文档中有解释:

在jQuery 1.4.3中,您现在可以传入false来代替事件处理程序。 这将绑定一个等效于: function() { return false; } function() { return false; }

使用one() 文档绑定事件处理程序。 它执行一次并在之后自动解除绑定。

 $(".subnav a").one("click", function(event) { event.preventDefault(); }); 

或者,您可以直接在函数中自行解除绑定。 为此使用命名空间是很好的

 $(".subnav a").bind("click.myclick", function(event) { event.preventDefault(); $(this).unbind(".myclick"); }); 

这很好用。 第二次点击进入页面…

 $(".smallNavigation > ul > li > a").click(function (e) { $("ul.sub-menu").hide(); $("ul.sub-menu", $(this).parent("li")).show(); e.preventDefault(); $(this).unbind(e); } 

你可以在点击处理程序中使用像self unbind这样简单的东西。

就像是

 function stopEventOnce(event) { event.preventDefault(); $(this).unbind('click',stopEventOnce); return false; } $(".subnav a").bind('click', stopEventOnce); 

修改小提琴

这对你有用

 $("#elementid").bind("click", function( event ) { alert("This will be displayed only once."); event.preventDefault(); $(this).unbind( event ); });