2

特定の要素とその子孫を除くすべてのDOM要素をCSSまたはjQueryで選択するにはどうすればよいですか?

指定された要素が #test であるとします

$('#test *')すべての #test 子孫を返します

- しかし -

$('* :not(#test))')または$('* :not(#test *))')または$('*').not('#test')または$('*').not('#test *')

動作しない!

編集: ページの領域以外の場所をクリックすると、クリックイベントをトリガーしたいと思います#test

4

5 に答える 5

3

ページの領域以外の場所をクリックしたときにクリックイベントをトリガーしたい#test

次に、クリックをすべての要素にバインドする必要はありません...ドキュメントにバインドして、ヒットしているかどうかを確認し、$('#test, #test *')ヒットしている場合は、クリックハンドラを中止します。

$(document).on('click', function(e) {
    if ($(e.target).is('#test, #test *')) {
        return;
    }

    // Do stuff
});

jsFiddleプレビュー

于 2012-05-11T14:50:23.430 に答える
1

クリックイベントで、クリックが次の範囲内にあるかどうかを確認します#test: http://jsfiddle.net/QDNCS/

$(document).click(function(e) {
    if (!$('#test')[0].contains(e.target)) {
        alert('Yay!');
    }
});​
于 2012-05-11T15:04:07.317 に答える
0

システムの再起動が終了しました:

$('*').not('#test, #test *')

それでも、イベントをそのセレクターにバインドしません。選択する要素が多すぎて、サイトの動作が遅くなる可能性があります。live()それが発生した場合は、代わりにjqueryを使用することを検討してください。

于 2012-05-11T14:46:51.187 に答える
0

このための正確なjQueryコードはわかりませんが、このjQueryスクリプトはあなたが探しているもののようです。

http://benalman.com/projects/jquery-outside-events-plugin/

お役に立てれば

于 2012-05-11T14:47:37.427 に答える
0

@The System Resetと@toppからの回答を組み合わせて、要求された動作を取得できます。

$(document).on('click', function (e) {
    if ($(this).is('#test, #test *')) {
        return;
    }
}

このコードはテストしていないことに注意してください。

于 2012-05-11T15:00:48.967 に答える