как удалить все li в моем ul с помощью it id?

#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