0

問題の簡単なプレビュー: を使用して、ターゲット要素のすべてのインスタンスにクラス属性を貼り付けることができますが、祖先 DOM に.closest()余分なものがあるクラス値は挿入されません。<div>

まず、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

4

2 に答える 2

0

代わりに親を使用する

$(element).parents("li").addClass("errorWrap");
于 2011-03-15T12:52:25.770 に答える