优化代码以将css类添加到父div

时间:2014-08-13 05:12:37

标签: jquery

我正在尝试向父级div添加一个类<div class="form-group">我让它工作,但是想知道是否有更短或更简单的方法吗?这是我的2个HTML情况

HTML:

<div class="form-group">
    <label class="col-md-3 control-label required" for="Comment_postcode">Your Postcode <span class="required">*</span></label>
    <div class="col-md-9 error">
        <span style="position: relative; display: inline-block;" class="twitter-typeahead">
            <input style="position: absolute; top: 0px; left: 0px; border-color: transparent; box-shadow: none; background: none repeat scroll 0% 0% rgb(255, 255, 255);" class="tt-hint" autocomplete="off" spellcheck="off" disabled="" type="text"/>
            <input dir="auto" style="position: relative; vertical-align: top;" spellcheck="false" autocomplete="off" class="form-control tt-query" name="Comment[postcode]" id="Comment_postcode" type="text"/>
        </span>
    </div>
</div>

<div class="form-group">
    <label class="col-md-3 control-label required" for="Comment_purchased">This vehicle was purchased <span class="required">*</span>
    </label>      
    <div class="col-md-9 error">
        <select id="Comment_purchased" class="form-control input-md">
            <option value="">Select One</option>
            <option value="1">New</option>
            <option value="2">Used</option>
        </select>
        <div class="errorMessage" id="Comment_purchased_em_" style="display:none">Purchased cannot be blank.</div>
    </div>
</div>

这是我的JQuery代码,用于添加或删除has-error类

if (i != "Comment_postcode") {
    $("#"+i).parent("div").parent("div").addClass("has-error");
} else {
    $("#"+i).parent("span").parent("div").parent("div").addClass("has-error");
}

我将如何优化上面的代码?如果可能的话没有if-else语句。感谢

2 个答案:

答案 0 :(得分:3)

使用 closest 获取最近的父级

 $("#"+i).closest(".form-group").addClass("has-error");
  

描述:对于集合中的每个元素,通过测试元素本身和遍历来获取与选择器匹配的第一个元素   通过它在DOM树中的祖先。

答案 1 :(得分:1)

您还可以使用 parents()

$("#"+i).parents(".form-group").addClass("has-error");