2015-04-06 43 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