2014-01-27 146 views
2

我想要获取所有下一个html代码,并且使用jquery排除ID为fiscal-address-info的DIV。我开始使用not方法,但没有成功。JQuery:排除儿童的一个元素

这是最初的snippet代码。

<div id="fiscal-info" class="content-fields"> 
    <h2>Datos Fiscales</h2> 
    <div class="row">...</div> 
    <div class="row">...</div> 
    <div class="row">...</div> 
    <div id="fiscal-address-info">Foo Bar</div> 
    <div class="row">...</div> 
    <footer>...</footer> 
</div> 

我想在jQuery的结果得到的是:

<div id="fiscal-info" class="content-fields"> 
    <h2>Datos Fiscales</h2> 
    <div class="row">...</div> 
    <div class="row">...</div> 
    <div class="row">...</div> 
    <div class="row">...</div> 
    <footer>...</footer> 
</div> 

这是我已经试过:

$('#fiscal-info').not('#fiscal-address-info'); 
+1

但你没有得到孩子...... – elclanrs

+1

你打算怎么处理这些元素?正如所写,这是毫无意义的,因为DOM元素自然包含了所有的子元素。如果你想获得相同的元素但缺少一个子元素,你需要'.clone()'原始(父元素)元素,然后从克隆中排除(即'.remove()')不需要的元素。 – Alnitak

回答

1

你需要得到的孩子你第一个元素,试试这个:

$('#fiscal-info').children().not('#fiscal-address-info'); 

如果你想家长也可以试试这个

var myHtml = $('#fiscal-info').clone(false) 
myHtml.children.remove('#fiscal-address-info'); 
+0

OP似乎也想要封闭的DIV ... – Alnitak

+0

这并没有发生在我身上,你可能是对的。 – Phaeze

0

获取#fiscal-info和它的孩子,与ID #fiscal-address-info排除孩子:

var collection = $("#fiscal-info").children.not("#fiscal-address-info").add("#fiscal-info"); 
1

如果你想重现DOM树的一个分支,但不包括没人要的孩子,使用:

var $copy = $('#fiscal-info').clone();  // deep copy 
$copy.find('#fiscal-address-info').remove(); // remove child 

然后你可以做任何你想要的$copy

但是请注意,将其转换回HTML,以便您可以随后将其重新插入DOM几乎是从不是正确的事情。 HTML只是DOM结构的转换的机制 - DOM结构的后续操作应该使用DOM方法完成。