2010-02-02 58 views

回答

1

我會有一個功能,設置下拉的可見性。我會從每個複選框的點擊處理程序和鏈接的處理程序調用此函數 - 我假設您的鏈接處理程序不僅僅在每個框上觸發單擊事件,而是將其設置爲狀態。除非您有其他行爲觸發觸發,否則每個複選框上的點擊事件將非常昂貴。在你設置的可見性函數中,使用一個測試來查看被選框的數量是否大於0,作爲可見性的新狀態。

function setDDVisibility() { 
    var isVisible = $('.checkbox-class-selector:checked').length > 0; 
    if (isVisible) { 
     $('#ddl').show(); 
    } 
    else { 
     $('#ddl').hide(); 
    } 
} 

$('.checkbox-class').click(function() { 
    ... do stuff ... 
    setDDVisibility(); 
    return false; 
}); 

$('.link-selector').click(function() { 
    ...set up checkboxes... 
    setDDVisibility(); 
    return false; 
}); 
+0

jquery live會讓這更容易完成嗎? – Blankman 2010-02-03 17:16:27

+0

我不明白。 Live只是讓處理程序綁定到可能被替換的元素。在你的情況下,你只是想改變基於另一個元素的更新的可見性。您可以通過在複選框上單擊「」來完成此操作,但是當您選中全部/全部取消選中時,它將爲每個複選框運行一次。我認爲在執行check all/none時不要在每個複選框上調用click處理程序更好。 – tvanfosson 2010-02-03 17:49:58

相關問題