问题的快速预览:使用.closest()
,我可以在目标元素的所有实例上粘贴一个类属性,但它不会<div>
在祖先 DOM 中具有额外属性的任何实例上插入类值。
首先,这是 jQuery:
// Throw class="errorWrap" on any <li> element that contains a field that doesn't validate
highlight: function(element) {
$(element).closest("li").addClass("errorWrap");
}
(……“highlight:”是 Validate 插件的一部分……)
这是我的 HTML 片段:
<li>
<div>
<span class="reqField">*</span> Have you been employed with us before?<br />
<label class="radioInput"><input type="radio" name="app_prior_employ" value="Yes" /> Yes</label>
<label class="radioInput"><input type="radio" name="app_prior_employ" value="No" /> No</label>
</div>
<div>
<label for="app_prior_employ_date">If <em>yes</em>, when were you employed?</label><br />
<input type="text" name="app_prior_employ_date" value="" size="40" id="app_prior_employ_date" />
</div>
</li>
…现在,有了上面的内容,class 属性将在应该添加到开始<li>
标记时添加,但它的值将是空的而不是errorWrap
正如我在这个问题的开头提到的,这个问题只发生在<div>
混合有元素的实例上(就像它们在上面一样)。此问题不会发生在其他<div>
没有到位的情况下,例如:
<li>
<span class="reqField">*</span> Can you travel if a job requires it?<br />
<label class="radioInput"><input type="radio" name="app_travel_for_job" value="Yes" /> Yes</label>
<label class="radioInput"><input type="radio" name="app_travel_for_job" value="No" /> No</label>
</li>
我不知道为什么 jQuery 会成功地将类属性添加到我想要的任何地方,但无法将我定义的值插入到那些在 DOM 中具有额外元素的值中。我使用.closest()
不当?
稍后添加:这是该问题的标记屏幕截图:http: //i.stack.imgur.com/aiiaX.png