2013-09-18 3 views
36

Использование JQuery удалить, как я могу удалить все теги пролетных за исключением первого, за исключением ..JQuery удалить все элементы для первого одного

EDIT

var html = var htm = $("#addin").find(".engagement_data:last-child").find(".keys_values").html(); 
    html=' 
     <span style="display:block;" class="k_v"> 
     <innput type="text" class="e_keys" style="width:65px;" placeholder="key"/> 
     <input type="text" class="e_values" style="width:65px;" placeholder="value"/> 
     </span> 
     <span style="display:block;" class="k_v"> 
     <input type="text" class="e_keys" style="width:65px;" placeholder="key"/> 
     <input type="text" class="e_values" style="width:65px;" placeholder="value"/> 
     </span> 
'; 

ответ

7

Используйте этот селектор:

$('span:not(first-child)') 

Итак, ваш код:

$('span:not(first-child)').remove(); 
69

Try с:

$(html).not(':first').remove(); 

или быть более конкретными:

$(html).not('span:first').remove(); 

Чтобы удалить его из DOM, вместо html переменной, используйте селектор:

$('#addin .engagement_data:last-child .keys_values').not('span:first').remove(); 
+0

это будет удалить оболочку из элемента HTML right..How, чтобы удалить его сформировать DOM..Please см редактировать – Hulk

+0

@Hulk Я отредактировал свой ответ. – hsz

+1

Я пробовал последнее утверждение, и кажется, что все элементы span удалены. – Hulk

4

Попробуйте

$('html').not(':first').remove(); 
23

Или, как альтернатива:

$('span').slice(1).remove(); 

среза()
Учитывая объект JQuery, который представляет собой набор элементов DOM, метод .slice() создает новый объект JQuery, содержащий подмножество элементов, заданных начальным и, необязательно, аргументом конца.

начать
Тип: Integer
целое число, указывающее положение 0 на основе, по меньшей которой элементы начинают быть выбраны. Если значение отрицательное, это означает смещение от конца набора.

Источник: https://api.jquery.com/slice

Поэтому $('span').slice(1).remove() подберет, и удалить все элементы после первой инстанции.

+2

Это полезно, если вы хотите сохранить более 1. например. сохранить 3: $ ('span'). slice (3) .remove(); –

3

Вышеупомянутый может работать для конкретного примера, если в содержимом нет ничего другого, кроме дочерних элементов того типа, который вы ищете. Но вы столкнетесь с проблемами с более сложной разметкой:

<ul id="ul-id" class="f-dropdown tiny" data-dropdown-content=""> 
    <li> 
    <div id="warningGradientOuterBarG" class="barberpole"> 
    <div id="warningGradientFrontBarG" class="warningGradientAnimationG"> 
     <div class="warningGradientBarLineG"></div> 
    </div> 
    </div> 
    </li> 
    <li>foo</li> 
    <li>bar</li> 
</ul> 

var $ul = $('#ul-id') 
$ul.not(':first') //returns nothing 
$ul.find(':first') // returns first <li> 
$ul.find(':not(:first)') //returns the inner divs as well as the last two li's 
$('#ul-id li:not(first-child)') // this returns all li's 
$('#ul-id li:not(:first)') // this works: returns last two li's 
$ul.find('li').slice(1) // this also works and returns the last two li's 
$ul.find('li').slice(1).remove() // and this will remove them 
Смежные вопросы