这似乎是一个非常微不足道的问题,但我不能为这一生活工作。
我有这个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');
想法会很棒。
答案 0 :(得分:3)
这是因为您在复选框的change
事件中执行此操作。继续检查其中一个复选框 - 它将添加该类。
我会将您想要检查的代码复选框作为单独的函数,以便您可以轻松地将其称为onload
和onchange
并获得相同的结果。
下面是一个更新的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');
}
});