Скрыть все, кроме $ (это) через: не в селекторе jQuery - PullRequest
91 голосов
/ 25 августа 2009

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

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

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

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

Ответы [ 4 ]

186 голосов
/ 25 августа 2009
145 голосов
/ 25 августа 2009
$("table.tr").not(this).hide();

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

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

7 голосов
/ 07 февраля 2014

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

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

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

0 голосов
/ 25 августа 2009

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

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