94 votes

Cacher tout sauf $(this) via :not dans le sélecteur jQuery

Titre avancé, question simple :

Comment puis-je faire ce qui suit en jQuery (en cachant tout sauf les éléments suivants $(this) ) ?

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

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

187voto

Alex Gyoshev Points 6714
$(this).siblings().hide();

Traversée/frères et sœurs

148voto

SLaks Points 391154
$("table.tr").not(this).hide();

En passant, je pense que vous voulez dire $("table tr") (avec un espace au lieu d'un point).
De la façon dont vous le faites, il sélectionne chaque table qui a une classe de tr (ex, <table class="tr"> ), ce qui n'est probablement pas ce que vous voulez.

Pour plus d'informations, voir le documentation .

7voto

lenooh Points 507

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);
});

Ce qui a pour effet de faire disparaître tous les autres liens, à l'exception de celui sur lequel on a cliqué, et de faire disparaître en plus certains identifiants et classes choisis.

0voto

andres descalzo Points 8392

Je pense qu'une solution peut être la suivante :

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X