#jquery #xml
#jquery #xml
Вопрос:
Я перебираю некоторые элементы, используя jQuery .each(), и я хочу удалить узел, когда он удовлетворяет определенным требованиям. Я не уверен в синтаксисе для этого, я пробовал несколько вещей:
$(this).remove();
$xml.remove(this);
$xml.removeNode(this);
…и т.д. Возникли некоторые проблемы с поиском рабочего примера, может ли кто-нибудь указать мне правильное направление? Я предполагаю, что это просто, я просто не смог найти правильный синтаксис. Ниже приведена нерабочая скрипка.
Спасибо
Комментарии:
1. ваш нерабочий скрипт вызван отсутствием тегов {} после утверждения IF, об остальном я не знаю
2. Они не всегда нужны. Я обычно оставляю их, когда спешу и использую только однострочные действия. Хотя спасибо.
Ответ №1:
Это потому, что вызов remove()
удаляет только элемент из DOM. Это не удаляет его из вашего $siblings
объекта jQuery.
Если вы вызовете find()
еще раз, чтобы повторно сопоставить родственные файлы после удаления alex
узла, вы получите ожидаемые результаты:
var $xml = $(xmlString);
var $siblings = $xml.find("sibling");
$siblings.each(function(){
var name = $(this).attr("name");
if (name == "alex")
$(this).remove();
});
// Here, the "alex" element is not in the DOM, but still part of $siblings.
$xml.find("sibling").each(function(){
var name = $(this).attr("name");
console.log(name);
});
// Since we're calling find() again, the code above will only print "bob".
Вы найдете обновленный fiddle здесь.