jQuery:.closest添加了class属性,但不是我想要的值

时间:2011-03-15 12:45:00

标签: jquery jquery-validate closest

问题的快速预览:使用.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

2 个答案:

答案 0 :(得分:1)

你正确地使用了nearest(),但也许是那个实例中highlight()函数错误的上下文。在脚本检查器中,在高亮显示功能中放置一个断点,并查看元素是否实际上是您认为的输入。

或者,你说li有一个类,但是当div在混合中时没有值。也许班级正在设定然后立即取消设置。使用脚本检查器并设置断点将帮助您解决这个问题。

答案 1 :(得分:0)

使用父母

$(element).parents("li").addClass("errorWrap");