0

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

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

2 回答 2

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

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

于 2013-01-21T20:22:02.413 回答
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
    );
}
于 2013-01-21T20:22:11.263 回答