На моей странице html у меня есть выбор с некоторыми параметрами.
При выборе опции выполняется вызов ajax, передающий значение параметра скрипту php, который возвращает фрагмент html (другой выбор) с определенным идентификатором, который добавляется к странице.Удалить элементы html, добавленные динамически с помощью JQuery
Когда пользователь выбирает другую опцию из первого выбора, событие запускается снова, выполняется вызов ajax, и к странице добавляется другой фрагмент html (с тем же идентификатором).
Я хочу, чтобы, если событие было выпущено во второй раз, добавленный элемент удаляется из страницы перед добавлением нового.
В настоящее время я использую этот код:
$(document).ready(function() {
$("#id_serie").change(function() { //#id_serie is the if of the first select
if ($("#id_subserie_label")) { //#id_subserie_label is the id of the html element returned by the ajax call
console.log("Removing");
$("#id_subserie_label").empty().remove();
}
var url = 'myscript.php';
var id_s = $(this).val();
$.post(url, {id_serie: id_s}, function(data) {
$("#id_serie").parent().after(data);
});
});
});
Это не работает, хотя, HTML элемент, возвращаемый вторым АЯКС вызов добавляется после того, как элемент возвращается из первого вызова (потому что элемент с id #id_subserie_label не находится на странице при загрузке скрипта?).
Как я могу достичь того, что мне нужно?
Причина ответ Matt Болл является правильным, является то, что JQuery Функция $() всегда возвращает объект jQuery независимо от того, сможет ли он найти искомые элементы. Свойство .length сообщает вам, сколько элементов найдено. – jessegavin