#javascript #jquery #html
#javascript #jquery #HTML
Вопрос:
Это простой вопрос, но я не нашел четкого ответа ни в одном из вопросов, которые я нашел. Я изменил JSFiddle для моего конкретного вопроса.
Я получил этот крошечный код:
<ul>
<li id='one'>Element 1</li>
<li id='two'>Element 2</li>
<li id='three'>Element 3</li>
<li id='four'>Element 4</li>
<li id='five'>Element 5</li>
</ul>
и этот скрипт должен возвращать ul
элемент, за исключением первого li
:
$(function(){
$("ul").not($('#one'))
});
Вместо этого он удаляет все li. Что я сделал не так?
РЕДАКТИРОВАТЬ: другими словами, мне нужен селектор, который выбирает это, не удаляя фактический элемент (= внутри переменной)
<ul>
<li id='two'>Element 2</li>
<li id='three'>Element 3</li>
<li id='four'>Element 4</li>
<li id='five'>Element 5</li>
</ul>
СКРИПКА: http://jsfiddle.net/LVUMs/13/
Комментарии:
1. «этот скрипт должен удалить элемент ul, за исключением первого li» Это не имеет смысла. Если вы удалите элемент ul, куда пойдет первый li?
2. нигде? Мне нужно вернуть ul, содержащий каждый элемент без первого. Я сказал «Удалить», для иллюстрации
3. Тогда вы должны были сказать «вернуть», а не «удалить». То, что делает ваш код, — это удаление содержимого.
4. извините, отредактированный вопрос
5. @Satpal это именно то, что мне нужно, у вас есть что-нибудь получше, пожалуйста :)?
Ответ №1:
Используйте
$("ul li").not($('#one')).remove();
или
$("ul li:not(#one)").remove();
Редактировать
Вам нужно
var ulexceptOneLi = $("ul li:not(#one)");
или
var ulexceptOneLi = $("ul li").not($('#one'));
Комментарии:
1. Спасибо, но мне нужно вернуть ul, содержащий удаленные li.
2. Удалите вложенные элементы, а затем верните объект.
3. Это не работает image.noelshack.com/fichiers/2014/25/1403266034-untitled.png
4. Ну, я начинаю думать, что то, что я ищу, тогда невозможно. Я не хочу перестраивать новый
ul
элемент, я хочу выбрать именно этотul
элемент без его первого дочернего элемента (но не удаляя его, он просто в этой переменной), чтобы выполнять операции с этимul
элементом. В любом случае спасибо5. @Satpal , ты добрый, но это не работает. Я думаю, что нет возможного решения. Действительно, я упростил проблему, с которой столкнулся, установив простой код, который вы видите здесь (ситуация с ul и li) Однако то, что вы предлагаете мне, не может работать, потому что мне нужно анимировать (функция анимации jQuery) ul без этого li. И если я анимирую клон, это не сработает, потому что анимированным будет только клон. Я поддержал ваш ответ в знак благодарности. В моем случае я пока полностью удалю этот li, выполню анимацию и повторно добавлю этот li.
Ответ №2:
Комментарии:
1. Извините, я изменил вопрос, я хочу вернуть ul, содержащий удаленный li, а не просто удалить их
Ответ №3:
Предполагая, что вы хотели сохранить ul
в игре:
$("ul li#one").remove();
Вот скрипка…
Если вы хотите вернуть ul
элемент с удаленным элементом внутри, попробуйте это:
function do_crazy_thing(){
var removed = $("ul li#one").remove();
return $('<ul></ul>').append(removed);
}
do_crazy_thing();
Вот еще одна скрипка…
Вот как вы затем добавите свой новый ul
элемент в тело…
Комментарии:
1. Я имел в виду, что это не работает, потому что он не возвращает элемент ul, он удаляет его, но это не то, что я хочу
2. Спасибо, это именно то, что мне нужно, у вас есть более приятное решение, пожалуйста?
3. что значит «лучше»? 🙂
4. Без необходимости удаления и повторного добавления я бы хотел, чтобы селектор выбирал это
removed
непосредственно внутри переменной 🙂5. Боюсь, вам нужно будет уточнить. Каким вы хотите, чтобы конечный результат был? Селектор для нежелательного
li
элемента прост$("ul li#one")
…
Ответ №4:
Согласно вашему вопросу, ожидаемый результат :
<ul>
<li id='two'>Element 2</li>
<li id='three'>Element 3</li>
<li id='four'>Element 4</li>
<li id='five'>Element 5</li>
</ul>
Проверьте демонстрацию.
Редактировать :
$(function(){
var removed = $("ul li:not(#one)");
});
или
var op = $("ul :not(#one)");
Комментарии:
1. нет, я ожидаю этот вывод только в переменной, извините, я меняю вопрос.. извините за ясность
2. @sidney обновил мой ответ
3. Это не работает. image.noelshack.com/fichiers/2014/25/1403266034-untitled.png
Ответ №5:
Пожалуйста, попробуйте приведенный ниже JS-код
$(function(){
var test= $("ul li").remove("#one");
});