我有一个下拉菜单,其中包含复选框,并且可以一次检查多个。选中复选框时,标签的类被设置为“选中”,然后在取消选中时删除。
选中复选框之前:
<label><input type="checkbox" name="gainlosstypes[]" value="Losses" class="upperFilter">Losses</label>选中复选框后:
<label class="checked"><input type="checkbox" name="gainlosstypes[]" value="Losses" class="upperFilte">Losses</label>当它被选中时,label元素就会调用它的.toggleClass('checked')。
我需要能够检测哪个标签的类被设置为"checked“,这样我就可以根据这些字段过滤数据。
如果$(this)是label元素,那么当我尝试$(this).hasClass('checked')时,它会抛出一个错误。这是我知道的唯一尝试的方法。是否有其他方法可以判断特定的label元素是否有特定的类?
编辑:
当我试图检查属性时,我会得到这些错误。当我使用hasClass时也会发生这种情况:
> $(".multiSelectOptions :checkbox")[1].attr('checked')
TypeError: Object #<HTMLInputElement> has no method 'attr'
> $(".multiSelectOptions :checkbox").parent('label')[1].attr('checked')
TypeError: Object #<HTMLLabelElement> has no method 'attr'发布于 2013-09-13 15:22:46
选中的不是css类,而是html属性。因此,您应该检查属性,而不是类。
你应该试着:
if($(this).attr('checked') != null)
{
//do stuff here
}编辑:
就像@Bojangles说的那样,checked可以是一个定制的CSS类,但是与自定义css类相比,选择带有属性的复选框可能更有意义。
编辑2:
请跳过先前的答案,而使用以下内容:
您可以在以下方面使用JQuery选择器:
例如:
$('.checked')//this would get you all the element with the class 'checked'
//if you want to check if you have any check element:
if($('.checked').length > 0)
{
//do stuff here
}
//To loop trought all the element that are 'checked'
$('.checked').each(
function(index)
{
$(this).removeClass('checked');
//do stuff here for exemple...
}
)发布于 2013-09-13 15:22:31
如果标签具有属性“checked”集,这将设置checked,否则,您将得到未定义的逻辑,并且可以将您的逻辑建立在此基础之上。
var checked = $(this).attr('checked');发布于 2013-09-13 15:26:43
怎么样
if( $(this).attr('class') == "checked" ){
... do something
}它将检查已检查的类。。。
https://stackoverflow.com/questions/18789828
复制相似问题