2016-03-15 100 views
1

所以我試圖改變父級隱藏元素的子元素的類。jQuery綁定事件處理程序到一個隱藏的元素(display:none)

基本上我試圖綁定兩個僞複選框,一個是在FrontPage(讓我們說「記住我」),另一個是在隱藏菜單(顯示:無)。

目前,如果我使用的選擇來接他們所有:

$('.rememberme').on('click', function() { $(this).toggleClass('fa-square fa-check-square') }); 

它沒有父隱藏「.rememberme」元素上工作。

<html> 
<title>test</title> 
<body> 
    <section class="hidden" style="display:none"> 
    <a href="#" class="rememberme"><i class="fa fa-square"></a> 
    </section> 
    <section style="display:block"> 
    <a href="#" class="rememberme"><i class="fa fa-square"></a> 
    <button id="fu">turn first section one</button> 
    </section> 
</body> 
</html> 

因此導致不一致。

目前我只看到2種方式 - 運行一個「線程」(即間隔)並從localstorage/global中獲取檢查值,並同步數據(看起來很笨重),或綁定到激活的按鈕元素該部分

$('#fu').on('click', function() { $('.hidden').show(); }); 

整個重新綁定函數(我做過這樣的事情之前.live被髮明)。

+0

你怎麼知道它沒有綁定到父隱藏元素?如果我刪除內聯CSS並切換隱藏的元素,那麼綁定就在那裏:https://jsfiddle.net/igor_9000/n6tj1w9z/ –

+0

它是綁定的,但只有在元素處於活動狀態或顯示狀態時纔有效。無論如何,有幫助的答案在下面。 – Andrew

回答

1

試試這個:

$('.rememberme').on('click', function() { 
    $('.rememberme').toggleClass('fa-square fa-check-square') 
}); 

$(this)目前唯一的鏈接beeing點擊選擇。 這$('.rememberme')每次選擇所有「rememberme」鏈接。

您可能希望通過將$('.rememberme')的結果存儲在變量中來改善此情況,因此無需每次都從DOM收集鏈接。

+0

哇,謝謝,jquery文檔說它適用於來自選擇器的多個項目。我錯誤地認爲它綁定到選擇器而不是每個元素。 – Andrew

相關問題