#javascript #jquery #list
#javascript #jquery #Список
Вопрос:
У меня есть список ul.
Я хочу удалить все li в моем ul с помощью it id?
Ответ №1:
Все эти вещи с jQuery. 🙂
Обычная старая версия javascript:
var ul = document.getElementById('<ul id>');
if (ul) {
while (ul.firstChild) {
ul.removeChild(ul.firstChild));
}
}
Вы также могли бы установить:
ul.innerHTML = '';
или даже:
ul.parentNode.replaceChild(ul.cloneNode(false), ul);
но я предпочитаю первый метод.
Комментарии:
1. @ThiefMaster это здорово и делает все.
2. @BenjaminGruenbaum но выполняет ли это математику?!
Ответ №2:
Если вы хотите удалить все li
элементы внутри ul
с определенным идентификатором:
$('#id-of-ul > li').remove();
Поскольку в любом случае ul
имеет только li
дочерние элементы, вы также можете использовать $('#id-of-ul').empty()
для удаления всех его дочерних элементов.
Ответ №3:
Вы также могли бы использовать empty()
:
$('#listId').empty();
Ответ №4:
* Использование jQuery
Вы имели в виду, что хотите удалить все li с тем же идентификатором? (Вот как я интерпретировал вопрос)
$('#id').remove()
(Помните, что использование одного и того же идентификатора для нескольких элементов DOM не считается хорошим программированием и его всегда следует избегать! Всегда используйте хорошую IDE для проверки вашего кода)
Вы также можете удалить с помощью класса (это лучший способ удалить сгруппированные элементы по имени класса)
$('.className').remove()
Эти две функции удалят ВСЕ элементы с идентификатором / классом
Чтобы ограничить удаление идентификаторов / классов только из LI
$('li #id').remove();
$('li .className').remove();
Вы также можете создать функцию на JavaScript. Это приведет к удалению любого DOM с классом itemDelete, щелкнувшим по нему.
$('.itemDelete').live("click", function() {
var id = $(this).parent().get(0).id;
$("#" id).remove();
});
Создать цикл и вызвать функцию?
function deleteLI(id) {
$("#" id).remove();
};
Комментарии:
1. Что вы подразумеваете под «всеми li с одинаковым идентификатором»? Атрибут id должен быть уникальным.
2. Да, так и ДОЛЖНО БЫТЬ, но — я уже видел плохое программирование с ТАКИМИ ЖЕ идентификаторами раньше….. Я интерпретировал его вопрос следующим образом. Но я должен был указать, что это плохая практика
Ответ №5:
Быстрый грязный способ сделать это на чистом js был бы:
var ul = document.getElementById("ul_id");
ul.innerHTML = "";
Это, конечно, предполагает, что нет других дочерних элементов, отличных от li, которые вы не хотите удалять.
Комментарии:
1. UL может иметь только дочерние узлы LI.
2. @RobG — конечно, теоретически да. Однако я видел иное, и я не хотел делать предположений.
Ответ №6:
Вам нужно будет вызвать remove()
метод.
// Removes a single element with the specified id
$('#id-of-the-element').remove();
Взгляните на документацию для получения дополнительной информации.
Комментарии:
1. Второй пример неверен — смотрите Мой комментарий к ответу @Sumit и / или jsfiddle.net/ThiefMaster/2hDgD
2. @ThiefMaster: Действительно, почему этого не происходит?
3. Потому что
$('selector1').remove('selector2')
просто фильтрует результаты отselector1
использованияselector2
. Он не фильтрует своих дочерних элементов.
Ответ №7:
Должно сработать следующее:
$('#uiId').remove('li');
Комментарии:
1. Это удаляет
li#uiId
. Селектор, переданныйremove()
, не выбирает дочерние элементы, а фильтрует начальный набор. И предполагается, что объект jQuery с#id
селектором в любом случае должен содержать не более одного элемента. Демо: jsfiddle.net/ThiefMaster/2hDgD