2015-04-06 98 views
0

WHE使用jQuery .on('click', ...)执行两次功能:的jQuery上点击两次火灾

$(document).ready(function() { 
    $('#collapsible-menu li a').click(function() { 
     $('#collapsible-menu li').removeClass('active'); 
     $(this).parent('li').addClass('active'); 
    }); 
}); 

所以会发生什么是菜单项瞬间变为有效,然后阶级消失。

我不知道为什么它被解雇两次。我不想使用event.preventDefault()event.preventPropagation()return false,因为然后点击链接将无处可用。

HTML:

<div class="collapse navbar-collapse" id="collapsible-menu"> 
    <ul class="nav navbar-nav"> 
    <li class="active"><a href="/expenses">Expenses</a></li> 
    <li class=""><a href="/types">Types</a></li> 
    </ul> 
</div> 
+0

最终结果将是该代码是无操作的。 –

+0

你是如何确认点击处理程序执行两次的? console.log,提醒? – Igor

+0

我通过提醒 – dabadaba

回答

2

你点击该页面重定向到/types锚。

当您转到另一页面时,无论javascript所做的任何更改都会丢失。
所以你添加一个类,然后将其重定向和类丢失,事件处理程序不会触发两次
为了避免重定向可以防止锚的默认操作

$('#collapsible-menu li a').click(function(e) { 
    e.preventDefault(); 
    $('#collapsible-menu li').removeClass('active'); 
    $(this).parent('li').addClass('active'); 
}); 

不能期望保持类,重定向在同一时间,你必须做一个或另一个。

+0

因此我应该通过javascript重定向? – dabadaba

+0

@dabadaba jQuery没有重定向的要点,除非你有办法从代码隐藏或者你没有向我们展示的脚本设置活动状态 –

+0

我不明白你在说什么。 – dabadaba