我正在尝试添加class="required"
一个label
元素,该元素以其最简单的形式(输入type =“ text”)出现在表单软件的以下结构中:
<div>
<label>X</label>
</div>
<input required type="text">
基本上,标签是包裹在div中的,因此以下代码可以很好地工作:
var a = $('*[required]').prev();
var b = a.find('label');
if (b)
b.addClass('required');
然而,有时之间的间隙<input>
和<label>
较大,例如,当它是一个单选按钮:
<div>
<label>X</label>
</div>
<span>
<div>
<input required type="radio">
</div>
</span>
那么,如果再往后移一点,如何定位标签呢?我尝试了链接,.prev()
但无法正常工作。
如果正确使用标签,将会容易得多。使用for
属性将其绑定到基于ID的输入(确保输入中的ID都是唯一的):
<div>
<label for="foo">X</label>
</div>
<input id="foo" required type="text"/>
$('*[required]').each(function() {
var l = $('label[for="' + this.id + '"]');
if(l.length > 0) {
l.addClass('required');
}
else {
// some convoluted and easily broken DOM traversal fallback
}
});
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句