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

How to check if checkbox doesn't have a label?

本文关键字:是否 标签 复选框 何检查 检查      更新时间:2023-09-26

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

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

你也可以单独使用CSS来做到这一点,这取决于你的HTML是什么样子的,但你不能在CSS中比较idfor

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

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