チェックボックスのリストがあります。ラベルが付いているものと付いていないものがあります。ラベルのないすべてのチェックボックスに特定のスタイルを付けられるようにしたい。これができるアイデアはありますか?
<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);
}
});
HTMLの外観によっては、CSSだけでこれを行うこともできますが、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
);
}