Я работаю над сообщениями об ошибках для своей формы, и я пытаюсь выяснить, как отображать ошибки, используя одну функцию. К сожалению, отношение элемента сообщения об ошибке к полю меняется в моей форме. В некоторых случаях это будет так:Поиск следующего экземпляра элемента, независимо от отношения, с помощью jQuery?
<div class="col-sm-6">
<label for="first_name">First Name</label>
<input type="text" id="first_name" name="first_name" />
<div class="error">Please enter your first name.</div>
</div>
В этом случае, я могу использовать $(this).next.show();
для того, чтобы отобразить сообщение об ошибке.
Однако, в других случаях, мои поля структурированы следующим образом:
<div id="variants">
<div class="col-sm-6 col-lg-4">
<label><input type="radio" name="variant" value="red">Red</label><br/>
<label><input type="radio" name="variant" value="green">Green</label><br/>
<label><input type="radio" name="variant" value="blue">Blue</label>
</div>
<div class="col-sm-6 col-lg-4">
<label><input type="radio" name="variant" value="yellow">Yellow</label><br/>
<label><input type="radio" name="variant" value="brown">Brown</label><br/>
<label><input type="radio" name="variant" value="orange">Orange</label>
</div>
<div class="error">Please select a product variant.</div>
</div>
В этом примере выше селектора JQuery не будет работать, так как .error
элемент является родственным родителем ввода, вместо прямого брата входа.
Мой вопрос в том, есть ли способ выбрать следующий ближайший экземпляр элемента независимо от отношения к элементу, с которым он сравнивается? Я искал .closest()
, но не смог заставить его работать.
Спасибо!
Если бы все содержащие divs имели общий класс, это было бы просто. – j08691
Вы должны использовать id вместо селекторов классов. Вам необходимо правильно структурировать элементы и макет. Как и для ошибки, вы можете поместить id с префиксом или суффиксом, например id = "firstname_error", поэтому в jquery вы просто скажете jquery ('# _error'). Show() –
andrex
@Andrex - отличное предложение и бит более чистый способ приблизиться к этой проблеме, спасибо! – user13286