问题的快速预览:使用.closest()
,我能够在目标元素的所有实例上粘贴一个类属性,但它不会在任何有额外{{1}的实例上插入类值。 1}}在祖先DOM中。
首先,这是jQuery:
<div>
(...'highlight:'是Validate插件的一部分......)
这是我的HTML片段:
// Throw class="errorWrap" on any <li> element that contains a field that doesn't validate
highlight: function(element) {
$(element).closest("li").addClass("errorWrap");
}
...现在,通过上述内容,类属性将添加到开头<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>
标记中,但它的值将为空而不是 errorWrap
正如我在本问题的顶部所提到的,此问题仅发生在混合中具有<li>
元素的实例上(如上所述)。此问题不会在<div>
未到位的其他实例上发生,例如:
<div>
我无法弄清楚为什么jQuery会在我想要的地方添加class属性成功,但是无法插入我在DOM中有一个额外元素的值中定义的值。我不正确地使用<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>
吗?
稍后添加:以下是该问题的标记屏幕截图:http://i.stack.imgur.com/aiiaX.png
答案 0 :(得分:1)
你正确地使用了nearest(),但也许是那个实例中highlight()函数错误的上下文。在脚本检查器中,在高亮显示功能中放置一个断点,并查看元素是否实际上是您认为的输入。
或者,你说li有一个类,但是当div在混合中时没有值。也许班级正在设定然后立即取消设置。使用脚本检查器并设置断点将帮助您解决这个问题。
答案 1 :(得分:0)
使用父母
$(element).parents("li").addClass("errorWrap");