Скрыть все, кроме $(this), через: не в селекторе jQuery

Расширенный заголовок, простой вопрос:

Как я могу сделать следующее в jQuery (скрывая все, кроме $(this))?

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

    $("table tr").show();
});

Ответ 2

$("table.tr").not(this).hide();

В стороне, я думаю, вы имеете в виду $("table tr") (с пробелом вместо точки).
Как у вас есть, он выбирает каждую таблицу с классом tr (например, <table class="tr">), что, вероятно, не является тем, что вы хотите.

Для получения дополнительной информации см. документацию .

Ответ 3

Если вы хотите комбинировать not() с некоторыми другими селекторами, вы можете использовать add():

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

Это приведет к исчезновению всех других ссылок, но щелкнут один, и дополнительно затушевывает некоторые выбранные идентификаторы и классы.

Ответ 4

Я думаю, что решение может быть следующим:

$("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();
})