1

.selectDOMツリーのどこかにネストされているクラスを持つすべての要素を選択しようとしています。
唯一の制限は、クラスを持つ親を持つことは許可されていないということです.forbidden

したがって、次のツリー部分には要素が見つかりません。

<div>
    <div class="forbidden">
        <div>
            <div>
                <div class="select">Some Content</div>
            </div>
        </div>
    </div>
</div>

しかし、ここに1つの要素があります。

<div>
    <div>
        <div>
            <div>
                <div>
                    <div class="select">Some Content</div>
                </div>
            </div>
        </div>
    </div>
</div>

.not()関数を使用してこの選択を行うにはどうすればよいですか?このようなもの: $('.select').not($(this).parents().hasClass('.forbidden'));

4

3 に答える 3

6

親要素をチェックする必要がありclosest()、そのクラスで見つかった最初の要素で停止し、セレクターに長さがあるかどうかを確認します。要素が含まれている場合、そのクラスのDOMツリーのどこかに要素があります。

$('.select').filter(function(){
     return !$(this).closest('.forbidden').length;
});
于 2012-08-21T14:52:47.100 に答える
4

私は使用しません:not

しかし、私はフィルターを使用します:

$('.select').filter(function(){return !$(this).parents().is('.forbidden')});

セットの少なくとも1つの要素(ここでは親)がセレクターと一致する場合、はtrue返すことに注意してください。

于 2012-08-21T14:51:14.700 に答える
3
$('.select').filter(function() {
    return $(this).closest('.forbidden').length == 0;
});
于 2012-08-21T14:51:01.237 に答える