web-dev-qa-db-ja.com

jQueryセレクターではなく:$(this)以外をすべて非表示にします

高度なタイトル、簡単な質問:

JQueryで次のことを行うにはどうすればよいですか($(this)以外のすべてを非表示にします)?

$("table tr").click(function() {
    $("table tr:not(" + $(this) + ")").hide();
    // $(this) is only to illustrate my problem

    $("table tr").show();
});
92
Kordonme
$(this).siblings().hide();

旅行/兄弟

187
Alex Gyoshev
_$("table.tr").not(this).hide();
_

余談ですが、$("table tr")(ドットの代わりにスペースを使用)を意味すると思います。
その方法では、tr(たとえば_<table class="tr">_)のクラスを持つすべてのテーブルを選択しますが、これはおそらく望んでいないものです。

詳細については、 documentation を参照してください。

147
SLaks

Not()を他のセレクターと組み合わせたい場合は、add()を使用できます。

$('a').click(function(e){
  $('a').not(this).add('#someID, .someClass, #someOtherID').animate({'opacity':0}, 800);
});

これにより、クリックされたリンク以外のすべてのリンクがフェードアウトされ、さらに選択されたIDとクラスがフェードアウトされます。

7
lenooh

私は解決策はこれだと思う:

$("table.tr").click(function() {
    $("table.tr:not(" + $(this).attr("id") + "").hide(); // $(this) is only to illustrate my problem
    $(this).show();
})

-コメントの編集:

$("table.tr").click(function() {
    $("table.tr:not(#" + $(this).attr("id") + ")").hide(); // $(this) is only to illustrate my problem
    $(this).show();
})
0
andres descalzo