jQuery – selectinput字段的关联标签元素

我有一组input字段,其中一些有关联的标签,有些没有:

<label for="bla">bla</label> <input type="text" id="bla" /> <label for="foo">bla <input type="checkbox" id="foo" /> </label> <input ... /> 

那么,如何才能为每个inputselect相关的标签?

你不应该使用prevnext来依赖元素的顺序。 只需使用标签的for属性,因为它应该对应于您当前操作的元素的ID:

 var label = $("label[for='"+$(this).attr('id')+"']"); 

但是,在某些情况下,标签将不会被设置,在这种情况下,标签将成为其关联控件的父项。 要在两种情况下find它,可以使用以下变体:

 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; } } 

我希望这有帮助!

有两种方法可以指定元素的标签:

  1. 将标签的“for”属性设置为元素的ID
  2. 将元素放置在标签内

所以,find元素标签的正确方法是

  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 } 

只要你的inputlabel元素与他们的id和属性相关联,你应该能够做到这样的事情:

 $('.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! } }); 

如果for没有设置,那么这些元素之间没有语义关系,在这种情况下使用label标签没有任何好处,所以希望你永远都可以定义这个关系。