jQuery:.closest添加class属性,但不添加我的预期值

jQuery:.closest添加class属性,但不添加我的预期值,jquery,jquery-validate,closest,Jquery,Jquery Validate,Closest,快速预览问题:使用.closest(),我能够在目标元素的所有实例上粘贴class属性,但它不会在祖先DOM中有额外的任何实例上插入class值 首先,这里是jQuery: // Throw class="errorWrap" on any <li> element that contains a field that doesn't validate highlight: function(element) { $(element).closest("li").addCla

快速预览问题:使用
.closest()
,我能够在目标元素的所有实例上粘贴class属性,但它不会在祖先DOM中有额外
的任何实例上插入class值

首先,这里是jQuery:

// Throw class="errorWrap" on any <li> element that contains a field that doesn't validate
highlight: function(element) {
    $(element).closest("li").addClass("errorWrap");
}
//对任何包含未验证字段的
  • 元素抛出class=“errorWrap” 亮点:功能(元素){ $(元素)。最近的(“li”).addClass(“errorWrap”); }
  • (…突出显示:'是验证插件的一部分…)

    下面是我的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属性添加到开头的
  • 标记中,但它的值将是空的,而不是errorWrap>

    正如我在这个问题的顶部提到的,这个问题只发生在混合中包含
    元素的实例上(就像上面所做的那样)。此问题不会出现在
    未安装到位的其他情况下,例如:

    <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能够成功地将class属性添加到我想要的任何地方,但却无法将我定义的值插入到那些在DOM中有额外元素的地方。我是否使用了
    .closest()
    不正确

    稍后添加:这里是问题的标记屏幕截图:

    改用家长

    $(element).parents("li").addClass("errorWrap");
    
    您正确地使用了nextest(),但在该实例中,highlight()函数所在的上下文可能是错误的。在脚本检查器中,在highlight函数中放置一个断点,然后查看元素是否是您认为的实际输入


    或者,您说li有一个类,但当div在混合中时没有值。也许这门课已经准备好了,然后马上就取消了。使用脚本检查器并设置断点将帮助您解决这个问题。

    应该可以。请创建一个示例来演示您的问题。如果您使用
    .parents('li')
    ,该怎么办?奇怪的是,如果我使用.parents('li'),同样的精确结果。它在这个测试中工作得很好,所以您的应用程序中一定有其他东西引起了头痛:jlbruno:您太棒了。看起来我需要解决代码中其他地方的问题。Validate插件返回元素作为第一个参数。因此,它应该与父母('li')一起工作。我肯定需要对自己进行一些关于断点/firebug等的培训。我可以像向导一样检查HTML/CSS,但我不知道我在脚本区域做了什么.我刚刚确认这个问题肯定是你的第二个建议:类值设置正确,但也会立即取消设置。看起来好像unhighlight(它会剥离类,并且只应该在字段验证时运行)正在立即运行。如果我使用.parents('li'),奇怪的是,同样的结果。(如果需要,我还添加了一个屏幕截图以提供帮助:)