1

私は次のような要素を持っています:

<div id="foo">
  <a href="#" class="some">click me</a>
  <div id="bar">
     <a href="#" class="some">click me too</a>
  </div>
</div>

a内部にない要素を選択する必要がありますbar。問題は、上記よりもはるかに複雑であるchildren()ため、を使用できないことです。foo

質問:
から「一部の」要素を選択し、 から「一部の」要素fooを明示的に除外する方法はありますbarか?

4

6 に答える 6

3

アンカー要素が常に直接の子であるとは限らない場合はfoo、メソッドを使用できますfilter()

var anchors = $("#foo a").filter(function(){
    return !$("#bar").find(this).length;
});

作業例 http://jsfiddle.net/v63tC/

于 2013-04-23T08:39:37.867 に答える
1

>直接の子表記を使用する場合があります。

$('#foo > a')

次のようにいくつかの elem を省略できます.not()

$("#foo a").not('#bar a').length;

フィドル

于 2013-04-23T08:37:34.923 に答える
1

あなたの#foo要素は例よりもかなり複雑であると述べたので、選択する必要があるのは直接の子孫だけではないと想定しても安全ですか? その場合は、次のことをお勧めします。

$('#foo a.some').filter(function() {
    return $(this).parents('#bar').length === 0;
});

これにより、 内のすべての <a>要素が選択され、それらがフィルタリングされて、の#foo付いた先祖を持たない要素のみが保持されます。idbar

于 2013-04-23T08:41:40.543 に答える
0

fooあなたはそれを行うことができます(変数があなたのものであると仮定します#foo

var a = foo.find('> a');
于 2013-04-23T08:36:51.190 に答える
0

最初のタスク (からすべての要素を取得する)を達成するために、子セレクターを使用できます。<a>foo

$('#foo > a'). ...
于 2013-04-23T08:37:19.480 に答える