2017-06-20 4 views
0

例.find:。 '(見つける私はすべての特別なクラスを選択するが、.closest(」メイン。')かどうかをフィルタするjQueryの、.NOTを持つクラスを選択.closestと一緒に

<div class="main"> 
<div><div class="left"></div></div> 
<div><div class="special"></div></div> 
</div> 

<div class="main"> 
<div><div class="right or center or any"></div></div> 
<div><div class="special"></div></div> 
</div> 

を左。 「)

だから、私はこのような何かしたい:それは正しくないが、私は.closestで.NOTセレクタを使用して、一緒に.findする任意の例を見つけることができませんでした。もちろん、

$('.special').not('.special').closest('.main').find('.left') 

を。ここで

+0

親の兄弟の子が 'left'ではなく' class'というクラスを持つ要素だけを選択しようとしていますか? –

+0

@AaronEveleth 'left'を含むすべての要素を除外したいので、正しい要素だけでなく、 – Zhenya

+0

という質問を編集する必要があるので、「left」ですべての要素を除外します。これは、あなたがその基準に合致しない要素を返そうとしていることを意味しますか? –

答えて

1

あなたが行く

$('.special').filter(function() { 
    if ($(this).closest('.main').find('.left').length > 0) { 
    console.log('invalid', $(this)); 
    } else { 
    console.log('valid', $(this)); 
    } 
}); 

更新:フィルター付き

var list = $('.special').filter(function() { 
    return ($(this).closest('.main').find('.left').length == 0); 
}); 

console.log(list); 

独自のフィルタを適用し、すべての要素を選択するには、それ

+0

しかし、すべての有効な要素のリストを取得するには、リストを作成してすべての有効な要素を追加するだけですか? – Zhenya

+0

これまでのところ、別の解決策はありません。可能性がありますか?しかし、なぜリストが必要なのですか?これはすでに繰り返されますか? – Schlumpf

+0

x秒ごとにこれらの要素をクリックする必要がありますので、リストを使用する方が簡単です。ありがとうございます。今すぐお試しください。 – Zhenya

0

に一致する要素のリストを受け取ることができますクラスspecialを使用していますが、条件を満たす場合は除外してください。

あなたの内側の周り

$('.special').each(function(){ 
    if(!$(this).parent('div').siblings('div').children('.left')) { 
     // logs element to console 
     console.log(this); 
    } 
}); 

また、クラスでdiv年代の内側にあなたが余分(不要)を持っているように見えるmaindiv:0

$('.special').each(function(){ 
    if(!$(this).closest('.main').find('.left')) { 
     // logs element to console 
     console.log(this); 
    } 
}); 

これを実行する別の方法は、あなたのHTMLに基づいて、このようなものですほとんどdiv秒です。私はそれらを削除し、コードをきれいに保つためにコードを更新することを提案しました。

関連する問題