首先单击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 ); });