2013-06-29 45 views
0

我已經看到了這個問題的不少迭代,但沒有解決我的特定問題。jQuery slideDown()slideUp()需要兩次點擊

單擊h3時觸發切換下方鏈接列表可見性的問題時會出現問題。選擇器和行爲正常工作,顯示隱藏的項目並正確隱藏其他項目。然而,一旦頭被點擊一次,它必須被點擊兩次以執行切換。這是一個小煩惱,但我想要一個解決方案。

因此,點擊一個標題會關閉它,如果它關閉,如果它是打開的,則分別添加和刪除.active類......都很好。

點擊另一個標題也會正常運行,隱藏打開的列表並打開點擊的標題。

但是,如果你去到第一個標題,以前打開,但現在關閉,只需單擊它不會啓動切換。它必須再次點擊。

這就是問題所在。我對頁面代碼的訪問權限有限,因此大多數遍歷選擇都必須在jQuery中完成,且標籤已經就位。

這裏的網頁有問題: http://queensvw.com/documents/stackoverflow

這裏是jQuery的:

$(document).ready(function() { 
    function hideAll() { 
    $('#minutes_highlights .date_heading').nextAll('.document_listing').slideUp(); 
    } 

    hideAll(); 

    $('#minutes_highlights .date_heading').click(function() { 
    if ($(this).hasClass('active')) { 
     $(this).removeClass('active'); 
     $(this).nextUntil('hr').slideUp(); 
    } else { 
     $(this).addClass('active'); 
     hideAll(); 
     $(this).nextUntil('hr').slideDown(); 
    } 
    }); 
}); 

我嘗試添加一個preventDefault()和基於其他線程setTimeout()。說實話,我不確定他們爲什麼會重要,因爲我不是在a上採取行動,但他們並沒有解決點擊問題。

有關如何避免第二次點擊的任何想法?

回答

1

這是因爲您在單擊其他元素時沒有刪除活動類。現在,我不能保證這會工作,因爲我無法測試它,但我敢肯定這是你改變else條件是:

else { 
    $('.active').removeClass('active'); 
    $(this).addClass('active'); 
    hideAll(); 
    $(this).nextUntil('hr').slideDown(); 
} 

它會奏效。

+0

我真** **真的很討厭它,當我想念明顯的時候。往往是這樣。感謝新鮮的眼睛;我總是可以依靠SO來獲得正確的發展方向。那樣做了。固定。謝謝! – dashard