Быстрый предварительный просмотр проблемы: используя .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>
… теперь, с учетом вышесказанного, атрибут класса будет добавлен к открывающему тегу <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