0
我有鏈接,單擊時選中所有複選框或取消選擇它們。使用jQuery時,只有當選中至少1個複選框時,下拉列表纔可見。
我也有一個下拉列表,我希望只有在選中至少一個複選框時纔可以看到。
這樣做的最好方法是什麼?
我應該在選擇/刪除選擇的代碼中寫入登錄還是有更好的方法來做到這一點?
我有鏈接,單擊時選中所有複選框或取消選擇它們。使用jQuery時,只有當選中至少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;
});
jquery live會讓這更容易完成嗎? – Blankman 2010-02-03 17:16:27
我不明白。 Live只是讓處理程序綁定到可能被替換的元素。在你的情況下,你只是想改變基於另一個元素的更新的可見性。您可以通過在複選框上單擊「」來完成此操作,但是當您選中全部/全部取消選中時,它將爲每個複選框運行一次。我認爲在執行check all/none時不要在每個複選框上調用click處理程序更好。 – tvanfosson 2010-02-03 17:49:58