jQuery - 用not()选择器来解决问题

时间:2011-12-07 20:56:10

标签: jquery jquery-selectors

在'div.row:visible'中我想fadeOut所有没有类span.sandwich的子()可见,虽然我很难搞清楚。

这是我到目前为止所拥有的

$('div.row:visible').children('span.sandwich:visible').not('.sandwich:visible').fadeOut('200');

这似乎不起作用,任何人都可以帮助我

HTML

<div class='row'>
    <span class='sandwich'>sandwich</span>
</div>
<div class='row'>
    <span class='not-sandwich'>not sandwich</span>
</div>

3 个答案:

答案 0 :(得分:1)

它可能会与孩子中的选择器混淆,你尝试过类似下面的东西,它应该选择所有的孩子,然后缩小选择范围:

$('div.row:visible').children().not('.sandwich:visible').fadeOut('200');

答案 1 :(得分:0)

我在菊花链jQuery选择方法之前遇到了麻烦,我能够通过嵌套选择器解决这些问题,如下所示:

$($($('div.row:visible').children('span.sandwich:visible')).not('.sandwich:visible')).fadeOut('200');

答案 2 :(得分:0)

只是为了澄清:

  

没有班级span.sandwich:visible

span.sandwich:visible不是一个班级。

sandwich是一个班级。

span.sandwich是具有span类的任何sandwich元素。

span.sandwich:visiblespansandwich类,visible

所以试着解释你的问题,我得到:

  

在'div.row:visible'...

在具有班级div ...

的可见row元素中
  

我想fadeOut所有没有类span.sandwich的子()

您希望fadeOut()所有 visible span个元素与sandwich成员div.row

对我而言,转换为

$('div.row:visible').children('span.sandwich:not(:visible)').fadeOut('200');

根据您的HTML添加:

$('span').not('.sandwich').fadeOut(200);

将淡出整个范围:

<span class='not-sandwich'>not sandwich</span>

$('span').not('.sandwich').parent().fadeOut(200);

将淡出整个div:

<div class='row'>
    <span class='not-sandwich'>not sandwich</span>
</div>

基于评论的最终编辑

http://jsfiddle.net/DDmsh/4/

如果您只想指定div.row个父母:http://jsfiddle.net/DDmsh/5/