Ale*_*lex 105 javascript forms jquery
我有一组输入字段,其中一些有关联的标签,有些则没有:
<label for="bla">bla</label> <input type="text" id="bla" />
<label for="foo">bla <input type="checkbox" id="foo" /> </label>
<input ... />
Run Code Online (Sandbox Code Playgroud)
那么,如何为每个输入选择相关标签?
小智 186
您不应该使用prev
或依赖元素的顺序next
.只需使用for
标签的属性,因为它应该对应于您当前正在操作的元素的ID:
var label = $("label[for='" + $(this).attr('id') + "']");
Run Code Online (Sandbox Code Playgroud)
但是,在某些情况下标签不会for
设置,在这种情况下标签将是其关联控件的父级.要在两种情况下找到它,您可以使用以下变体:
var label = $('label[for="' + $(this).attr('id') + '"]');
if(label.length <= 0) {
var parentElem = $(this).parent(),
parentTagName = parentElem.get(0).tagName.toLowerCase();
if(parentTagName == "label") {
label = parentElem;
}
}
Run Code Online (Sandbox Code Playgroud)
我希望这有帮助!
Max*_*kin 48
有两种方法可以为元素指定标签:
因此,找到元素标签的正确方法是
var $element = $( ... )
var $label = $("label[for='"+$element.attr('id')+"']")
if ($label.length == 0) {
$label = $element.closest('label')
}
if ($label.length == 0) {
// label wasn't found
} else {
// label was found
}
Run Code Online (Sandbox Code Playgroud)
Nat*_*son 15
只要和你input
和label
元件通过其关联id
和for
属性,你应该能够做这样的事情:
$('.input').each(function() {
$this = $(this);
$label = $('label[for="'+ $this.attr('id') +'"]');
if ($label.length > 0 ) {
//this input has a label associated with it, lets do something!
}
});
Run Code Online (Sandbox Code Playgroud)
如果for
没有设置,则元素之间没有任何语义关系,并且在该实例中使用label标签没有任何好处,因此希望您始终定义该关系.
归档时间: |
|
查看次数: |
142491 次 |
最近记录: |