У меня есть несколько форм на странице, каждая форма имеет свое собственное «поле сообщения», которое отображает ошибку проверки. Каждое «окно сообщения» имеет кнопку закрытия. У меня нет проблемы с закрытием кнопки «закрыть окно», но мне также нужно удалить класс «ошибка» из текстового ввода. Содержимое страницы вводится с помощью ajax, поэтому «.on»Обход DOM и удаление класса
Pseudo HTML (помните, что в любой момент из них все завернуты в свой собственный тег формы, в который входят окно сообщения и кнопка закрытия.
<form action="#" method="post" id="Form6">
<ul>
<li>
<label for="foo">label</label>
<input type="text" name="foo" id="foo">
<input type="submit" id="Button6" value="submit" />
</li>
</ul>
<div id="Msg6" class="error"><a class="close">X</a><ul></ul></div>
</form>
Моя попытка
$('body').on('click', 'a.close', function(){
$(this).parent().fadeOut("fast");
$(this).closest('input[type="text"].error').removeClass('error'); // doesn't work
$('a.close').closest('ul > li > input.error').remove();// doesn't work
//console.log($.closest('input[type="text"].error'));//tring to log the value of the ancestor
});
отлично. поэтому вы переходите DOM к родительской форме, затем найдите input.error и removeClass. Извлеченный урок сэр. Просто используя remove, чтобы получить базовую линию, нужно удалить класс. –
Да, но вы можете использовать 'ближайший' вместо' родителей'. Я думаю, что это быстрее, потому что 'ближайшее()' будет перемещаться назад до тех пор, пока не будет найдено совпадение, в то время как 'parents()' соберут всех родителей, а затем ищем соответствие –