jquery删除除第一个之外的所有元素

时间:2013-09-18 14:00:56

标签: jquery

使用jquery删除如何删除除第一个之外的所有span标记..

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>
';

6 个答案:

答案 0 :(得分:89)

尝试:

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

或更具体:

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

要从DOM中删除它,而不是html变量,请使用您的选择器:

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

答案 1 :(得分:38)

或者,作为替代方案:

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

<强>切片()
  给定一个表示一组DOM元素的jQuery对象,   .slice()方法构造一个包含子集的新jQuery对象   由start和(可选)end参数指定的元素。

     

开始
  类型:整数
  一个整数,表示开始选择元素的从0开始的位置。如果为负数,则表示距离集合末尾的偏移量。

来源:https://api.jquery.com/slice

因此,$('span').slice(1).remove()将在第一个实例之后选择并删除所有元素。

答案 2 :(得分:9)

使用此选择器:

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

所以你的代码是这样的:

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

答案 3 :(得分:5)

试试这个

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

答案 4 :(得分:5)

以上内容可能适用于特定示例,当您在内容中没有其他内容时,除了您要查找的类型的子元素。但是你会遇到更复杂的标记问题:

<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

答案 5 :(得分:0)

以下代码对我有用:

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