#jquery
#jquery
Вопрос:
У меня есть этот HTML:
$('a[data-action="get-resume"]').click(function(event) {
var client_conditions = $('[name="client_conditions"]');
if(client_conditions.prop('checked') == false) {
client_conditions.next('.error-message').removeClass('hide');
return false;
}
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="row">
<div class="col-xl-12 mb-4">
<div>
<input id="client_conditions" class="checkbox-style" name="client_conditions" type="checkbox">
<label for="client_conditions" class="checkbox-style-1-label">Lorem ipsum.</label>
</div>
<div class="error-message text-danger hide">Required</div>
</div>
</div>
<a href="#" data-action="get-resume">Validate</a>
При нажатии на Validate
него проверяется, client_conditions
установлен флажок или нет.
Он работает хорошо, но сообщение об ошибке не отображается.
client_conditions.next('.error-message').removeClass('hide');
Вы знаете, почему ?
Спасибо.
Комментарии:
1. Я не уверен, что .next оставляет текущую глубину DOMs. Так что, возможно, он найдет элементы только внутри родительского div?
Ответ №1:
Вы можете использовать closest()
и find()
метод jquery, чтобы приблизиться .row
, а затем получить error-message
div .
Демонстрационный код :
$('a[data-action="get-resume"]').click(function(event) {
var client_conditions = $('[name="client_conditions"]');
if (client_conditions.prop('checked') == false) {
//get closest .row and then find error message div
client_conditions.closest(".row").find('.error-message').removeClass('hide');
return false;
} else {
client_conditions.closest(".row").find('.error-message').addClass('hide');
}
});
.hide {
display: none
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="row">
<div class="col-xl-12 mb-4">
<div>
<input id="client_conditions" class="checkbox-style" name="client_conditions" type="checkbox">
<label for="client_conditions" class="checkbox-style-1-label">Lorem ipsum.</label>
</div>
<div class="error-message text-danger hide">Required</div>
</div>
</div>
<a href="#" data-action="get-resume">Validate</a>