我有一个复选框列表,其中一些有标签,有些则没有。我希望能够为没有标签的所有复选框提供某种样式。有什么想法可以做到吗?
<input type="checkbox" name="publish"/>
<input type="checkbox" id="delete" name="delete" /><label for="delete">Delete</label>
答案 0 :(得分:3)
$("input[type=checkbox]").each(function () {
if (!$("label[for='" + $(this).attr('id') + "']").length) {
$(this).css(styles);
}
});
您也可以单独使用CSS来执行此操作,具体取决于HTML的外观,但您无法在CSS中比较id
和for
。
答案 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
);
}