【问题标题】:How can I detect if a label has a specific class?如何检测标签是否具有特定类别?
【发布时间】:2013-09-13 23:58:45
【问题描述】:

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

选中复选框之前:

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

【问题讨论】:

  • 这应该会有所帮助:stackoverflow.com/questions/1318076/… 你可以做$('').attr('checked')
  • 显示一些代码 - 你是在标签上设置一个实际的类,还是混淆了classattribute?一个复选框可以有一个checked 属性
  • 请创建一个小提琴
  • 什么错误?请发布控制台日志
  • 为什么要使用带有复选框的标签?使用&lt;select multiple&gt;&lt;options value='yourvaluehere'&gt;Your label text here&lt;/option&gt;&lt;select&gt; 会更有意义吗????

标签: javascript jquery


【解决方案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...
}
)

【讨论】:

  • 啊,是的,但是它可以是一个CSS类,所以大家都搞糊涂了
  • @Bojangles 你说得对,它可能是一个 CSS 类,但从我在问题中看到的情况来看,它看起来像属性而不是自定义 CSS 类。
【解决方案2】:

怎么样

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

这将检查 checked 类。 . .

【讨论】:

    【解决方案3】:

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

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

    【讨论】:

    • var theSolutionYoureLookingFor = unExplainedFunction()
    • 答案应该包含解释,而不仅仅是一行代码
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-13
    • 1970-01-01
    • 2012-12-13
    • 2013-06-30
    • 2023-02-16
    • 1970-01-01
    相关资源
    最近更新 更多