jquery $ variable check是属性等于

时间:2012-12-06 20:06:05

标签: jquery

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

这似乎是一个非常微不足道的问题,但我不能为这一生活工作。

我有这个jQuery var ...

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/

3 个答案:

答案 0 :(得分: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'));
});

答案 1 :(得分:1)

您是否尝试过$ selectArea.is(':checked')http://api.jquery.com/checked-selector /

答案 2 :(得分:0)

试试这个:

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

正如您在此处所见:http://jsfiddle.net/darkajax/75kPU/3/