我有一个复选框列表,其中一些有标签,有些没有。我希望能够为所有没有标签的复选框赋予某种样式。有什么想法可以做到吗?
<input type="checkbox" name="publish"/>
<input type="checkbox" id="delete" name="delete" /><label for="delete">Delete</label>
我有一个复选框列表,其中一些有标签,有些没有。我希望能够为所有没有标签的复选框赋予某种样式。有什么想法可以做到吗?
<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 中id
进行比较。for
为了使标签起作用,它们必须具有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
);
}