2012-12-06 116 views
0

http://jsfiddle.net/2Wpfw/16/

這似乎真是小巫見大巫問題,但我不能爲生活工作這一個。

我有這個jQuery的無功...

var $selectArea = $("ul#1 li input[type='checkbox'], 
ul#2 li input[type='checkbox'], ul#3 li input[type='checkbox']"); 

,我想運行此...

$selectArea.closest('li').addClass('box-checked'); 

但只有當$selectArea屬性checked"checked" - 很簡單吧?


所以我已經試過這...

if ($selectArea.attr("checked") == "checked") { 

    $selectArea.closest('li').addClass('box-checked'); 

} 


和...

$selectArea.filter('[checked="checked"]').closest('li').addClass('box-checked'); 


這...(但認爲我在這裏聞錯了對象)

$selectArea.is('[checked="checked"]').closest('li').addClass('box-checked'); 



和想法將是真棒,謝謝。

http://jsfiddle.net/2Wpfw/16/

+0

一些提示:ID不能以數字開頭,你可以簡化爲$(「ul#a,ul#b」)。find (「li input [type ='checkbox']」)'。 – pimvdb

+0

謝謝你不知道。它只是在我的小提琴,但很好知道。 – Joshc

回答

3

這是因爲你這樣做的change事件的複選框內。繼續檢查其中一個複選框 - 它將添加類。

我會讓你想要發生的代碼檢查複選框一個單獨的功能,所以你可以很容易地稱它onloadonchange並具有相同的結果。

繼承人更新fiddle告訴你我的意思。

// reusable function 
function check($elem) 
{ 
    $elem.closest('li').toggleClass('box-checked', this.checked) 
} 

$selectArea.on('change', function() { 
    check($(this)); 
}); 

$(function(){ 
    // onload get all checked inputs via the :checked selector 
    check($('input:checked')); 
}); 

+0

謝謝@Snuffleupagus這是一顆寶石。偉大的整體解決方案,我的問題再次謝謝你! – Joshc

相關問題