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/

4

3 回答 3

3

这是因为您在change复选框的事件中执行此操作。继续检查其中一个复选框 - 它将添加类。

我会将您希望选中复选框的代码设为一个单独的函数,以便您可以轻松调用它onloadonchange获得相同的结果。

这是一个更新的小提琴,向您展示我的意思。

// 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'));
});

​</p>

于 2012-12-06T20:08:56.340 回答
1

你试过 $selectArea.is(':checked') http://api.jquery.com/checked-selector /

于 2012-12-06T20:09:24.873 回答
0

尝试这个:

$selectArea.each( function(i,e) {
    if ( $(e).is(':checked') ) {    
        $(e).closest('li').addClass('box-checked');
    }
});

正如你在这里看到的:http: //jsfiddle.net/darkajax/75kPU/3/

于 2012-12-06T20:17:10.540 回答