如何检查复选框是否没有标签?

时间:2013-01-21 20:19:48

标签: javascript jquery html css css3

我有一个复选框列表,其中一些有标签,有些则没有。我希望能够为没有标签的所有复选框提供某种样式。有什么想法可以做到吗?

<input type="checkbox" name="publish"/>
<input type="checkbox" id="delete" name="delete" /><label for="delete">Delete</label>

2 个答案:

答案 0 :(得分:3)

$("input[type=checkbox]").each(function () {
   if (!$("label[for='" + $(this).attr('id') + "']").length) {
      $(this).css(styles);
   }
});

您也可以单独使用CSS来执行此操作,具体取决于HTML的外观,但您无法在CSS中比较idfor

答案 1 :(得分:2)

为了使标签起作用,它们必须具有与输入元素for匹配的id属性,或者必须是输入元素的祖先。此函数将jQuery元素或字符串选择器作为参数,并检查是否存在具有for属性的标签,其值与元素的id匹配,或者是否存在标签祖先。

function hasLabel(el) {
    el = $(el); // ensure jQuery-wrapped
    return (
        el.closest('label').length > 0 ||
        $('label[for="' + el.attr('id') + '"]').length > 0
    );
}