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

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

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

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

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

4 ответов



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

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

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


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

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

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


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

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

--EDIT для комментариев:

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