2014-10-17 50 views
-3

我想在遇到另一个元素后停止搜索特定的子元素。jQuery搜索子元素,但不与某些div

$("parent").find("children").dontSearchWithin("nothere"); 

基本上我想选择所有的儿童元素,但不是在特定div内的儿童元素。

这里有一个例子http://codepen.io/Jarolin/pen/hCqAa

我不想选择是“不这里”元素内的跨度。

<div id="parent"> 
    <span>FIND ME</span> 
    <span>FIND ME</span> 
    <span>FIND ME</span> 
    <span>FIND ME</span> 

<div id="not-here"> 
    <span>IGNORE</span> 
    <span>IGNORE</span> 
    <span>IGNORE</span> 
</div> 

而且这可能有更多的子元素。而跨度不一定是父母的直接子女。可以是父元素的子元素的子元素的子元素。如果让SENCE

+0

您的HTML缺少关闭div标记。 – j08691 2014-10-17 17:26:39

+0

它不是我的实际项目中的HTML。只是一个简单的错误。 – UserDy 2014-10-17 17:35:51

回答

1

您可以简单地使用not()过滤选择:

var spans = $('#parent').find('span').not('#not-here span'); 
 

 
spans.css('color', '#f90');
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div id="parent"> 
 
    <span>FIND ME</span> 
 
    <span>FIND ME</span> 
 
    <span>FIND ME</span> 
 
    <span>FIND ME</span> 
 

 
    <div id="not-here"> 
 
    <span>IGNORE</span> 
 
    <span>IGNORE</span> 
 
    <span>IGNORE</span> 
 
    </div> 
 
</div>

Referencees: