如何检测标签是否具有特定类别?

时间:2013-09-13 15:18:42

标签: javascript jquery

我有一个包含复选框的下拉菜单,可以一次检查多个复选框。选中复选框后,其标签的类将设置为“已选中”,然后在取消选中时将其删除。

选择前复选框:

<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>

如果选中它,标签元素就会调用.toggleClass('checked')

我需要能够检测哪个标签的类设置为“已检查”,以便我可以根据这些字段过滤数据。

如果$(this)是标签元素,当我尝试$(this).hasClass('checked')时会抛出错误。这是我知道尝试的唯一方法。是否有其他方法可以判断特定标签元素是否具有特定类?

修改

我在尝试检查属性时遇到这些错误。当我使用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'

3 个答案:

答案 0 :(得分:1)

Checked不是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...
}
)

答案 1 :(得分:-2)

这将设置检查标签是否设置了“已检查”属性,否则您将得到未定义,并且可以将您的逻辑基于此。

var checked = $(this).attr('checked');

答案 2 :(得分:-2)

怎么样

if( $(this).attr('class') == "checked" ){
    ... do something
}

这将检查已检查的类别。 。