3

我有类似这样的标记:

<div class='wrapper plugin'>
    //some content
    <div class='child-wrapper plugin'>
      //some more content
      <div>
        <ul>     
          <li><div class='cliky'>clicky!</div></li>
        </ul>
      </div>
    </div>
  <div class='cliky'>clicky!</div>
</div>

我只需要能够选择第一个 .clickydiv ,而不是div 内的 任何div。.clicky.plugin > .plugin

包装器也有.plugin类 - 可能看起来违反直觉,所以另一种查看方式是:我想获取.clicky给定.plugindiv 的子级,但不是.plugin .plugin .clicky.

我试过像这样的选择器:

$('.wrapper').find('.clicky').not('.plugin > .clicky');

但他们仍然选择了所有子.clicky元素——包括那些嵌套.plugin元素。

我如何才能只选择.plugin .clicky特定.plugindiv 的元素,而不选择任何.plugin .plugin .clicky元素?

4

3 回答 3

4

试试这个:

$('.wrapper .clicky').filter(function(){
   return $(this).parents('.plugin').length === 1
})
于 2012-10-17T16:56:49.627 回答
1
$('.wrapper').find('.plugin .clicky')[0];

应该返回“找到”数组的第一个元素。如果需要将结果合并到 jquery obj 中,只需重新获取它。

var t = $( $('.wrapper').find('.plugin .clicky')[0]);
于 2012-10-17T16:47:29.157 回答
1

您可以使用:

$('.wrapper .cliky').not('.plugin > .plugin .cliky');

或者

$('.wrapper .cliky:not(.plugin > .plugin .cliky)');

在 jQuery 1.9 中测试

于 2016-09-08T18:04:45.783 回答