web-dev-qa-db-fra.com

Masquer tout sauf $ (this) via: not in jQuery selector

Titre avancé, question simple:

Comment puis-je effectuer les opérations suivantes dans jQuery (masquer tout sauf $(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();

Traversants/Frères et Soeurs

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

En passant, je pense que vous voulez dire $("table tr") (avec un espace au lieu d'un point).
Comme vous l'avez, il sélectionne chaque table ayant une classe de tr (par exemple, <table class="tr">), Ce qui n'est probablement pas ce que vous voulez.

Pour plus d'informations, voir le documentation .

147
SLaks

Si vous voulez combiner not () avec d'autres sélecteurs, vous pouvez utiliser add ():

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

Cela ferait disparaître tous les autres liens, sauf celui qui avait été cliqué, ainsi que certains identifiants et classes choisis.

7
lenooh

Je pense qu'une solution peut être ceci:

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

--EDIT pour commentaire:

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