2013-02-22 192 views
0

如何删除foolabel以及div子元素和br的?删除子元素

<label>qux</label> 
<label>foo</label><div id="block">text</div><br /><br /> 
<label>bar</label> 

我目前的临时方法:

$('label:contains("foo")').next().remove(); 
$('label:contains("foo")').remove(); 

如何才能提高在这?

回答

9

只是did on what html you posted这里。与.nextUntil()

$('label:contains("foo")').remove(); // <-----------label contains foo removed 
$('#block').remove(); //<---------------------------div with id 'block' removed 
$('label:contains(qux)').nextAll('br').remove(); //<--finally all the br next to first label removed 

checkout on fiddle

,甚至更好的一个:

试试这个

$('label:contains("qux")').nextUntil($('label:contains(bar)'),$('label, br')).remove(); 

fiddle for .nextUntil()

+0

+1不错...... :) – 2013-02-22 05:44:17

+0

@Mr_Green感谢v.much。 – Jai 2013-02-22 05:50:02

1

使用.html()方法并将其设置为null。

检查This参考

0

我没有看到改善去除FOO <label>的一个好方法。您可以提高去除div的,语法,通过使用

$('label:contains("foo") + div').remove(); 

CSS相邻兄弟选择。

0

试试这个:

$('label').each(function(){ 
    var self = $(this); 
    if(self.text() == 'foo'){ 
      self.next('div').remove(); 
      self.parent().find('br').remove(); //else use two times next() to remove two br tags. 
      self.remove(); 
    } 
}); 

请注明里面的父元素.parent(), 是这样的:

parent('div') //if you have a parent container as div. 
0
if($("label").text()=='foo'){ 
    $(this).next('div').remove(); 
    $(this).closest('br').remove(); 

    // I've used next and closest methods to remove..you can try with others.. 
} 
8

很简单:

$(element).children()。remove();

那么容易...