2010-11-02 173 views
5

非常簡單地說:行currentItem.toggleClass('open');似乎並沒有工作。jQuery toggleClass不工作?

更準確地說,當用螢火蟲檢查結果時,我可以看到相關元素上的「打開」類閃爍(出現並立即消失)。所以就像這個函數實際上觸發了兩次(當然,我只點擊一次)。

有人可以解釋爲什麼這是,以及如何防止它?

這裏是我的jQuery代碼:

$('div.collapse ul.radio_list li input[type=radio]').click(function (event) { 

    var currentTree = $(this).parent().parent().parent(); 
    var currentItem = $(this).parent().parent(); 
    var currentGroup = currentItem.attr('rel'); 

    $(this).parents('ul').children('li').removeClass('select'); 
    if ($(this).is(':checked')) { 
     currentItem.addClass('select'); 
    } 

    currentItem.toggleClass('open'); 

    var currentLevel = 0; 
    if (currentItem.is('.level1')) {currentLevel = 1;} 
    if (currentItem.is('.level2')) {currentLevel = 2;} 
    if (currentItem.is('.level3')) {currentLevel = 3;} 
    var nextLevel = currentLevel + 1; 

    currentTree.children('li').filter('li[rel ^=' + currentGroup + '].level' + nextLevel).animate({'height': 'show', 'opacity': 'show'}, 250).addClass('currentChild'); 
}); 

這裏是我的HTML代碼的一部分,稍作簡化爲更好的可讀性(不是很漂亮,我知道,但我只對HTML輸出控制有限):

<div class="col_left collapse"> 
    <ul class="radio_list" rel="7"> 
     <li class="onglet level0" rel="group1"> 
      <span class="onglet level0"> 
       <input type="radio" /> 
        <label>Services Pratiques</label></span> 
      <input type="hidden" value="1"> 
     </li> 

在此先感謝。

+1

你確定你不會以某種方式綁定這個函數兩次嗎? – NOtherDev 2010-11-02 11:22:14

+0

@A .:我不這麼認爲:這是我唯一一次在我的頁面中使用「.click()」,也是唯一一次修改此類名稱。我也嘗試使用其他類名,但沒有更好的結果。 – s427 2010-11-02 11:26:48

+0

@A .:其實你是對的!我正在使用一個我不太清楚的框架(Prado),而且我不知道JS文件已經被包含在HTML頭兩次。糾正這個問題解決了這個問題。謝謝! – s427 2010-11-02 11:39:23

回答

12

問題解決:JS文件實際上包含在HTML頭兩次,這導致每次點擊觸發兩次函數。

+0

在我的頭撞在鍵盤上一個小時後,你的評論爲我做了...我包括它兩次。 Ughhhhh – 2017-03-31 05:17:22

2

我在我的網站上有類似的問題,並且我發現我在意外地將底部的toggleclass鉤子重複了一遍,當時首先搞亂了它。哎呀!確保尋找雙重電話!

1

我有一個類似的問題,這樣做:

HTML:

<a>JS-link</a> 

JS:

$('a').click(function(event) { 
    ... my stuff ... 
    # Forgot to do event.preventDefault(); !! 
} 

結果被點擊兩次註冊!

1

我有同樣的問題,並意識到我不小心將功能綁定兩次。我原本打算將代碼從一個JavaScript文件移動到另一個文件,但意外地將原文留在原位。