2009-08-25 2 views
83

Erweiterte Titel, einfache Frage:

Wie kann ich die folgenden in jQuery (außer $(this) versteckt alles) tun?

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

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

Antwort

174
$(this).siblings().hide(); 

Traversing/Siblings

+10

jQuery macht alles so viel eleganter. +1! – JorenB

+14

+1. verdammt schön. – Lee

+5

jQuery ist die zweitgrößte Erfindung aller Zeiten nach dem Computer selbst! Ich liebe es! :) –

0

denke ich, eine Lösung das sein kann:

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

--edit für Kommentar:

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

Sie meinen ': nicht (#" + ... '. Auch das wird nicht funktionieren, wenn das Element eine ID hat, was unwahrscheinlich ist. – SLaks

+0

Sie auch' + ")") ... ' – SLaks

+3

dies würde verlangen, dass Sie zufällige und unnötige IDs auf alle Ihre Tabellenzeilen (oder was auch immer Sie verwenden) hinzufügen. – nickf

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

Als beiseite, ich denke, Sie meinen $("table tr") (mit einem Leerzeichen anstelle von einem Punkt).
So wie Sie es haben, wählt es jede Tabelle aus, die eine Klasse tr hat (zB <table class="tr">), was wahrscheinlich nicht das ist, was Sie wollen.

Weitere Informationen finden Sie unter documentation.

+0

Ja, es war ein Fehler Ich weiß irgendwie nicht, wie das einfacher ist als Alexanders Lösung, die sauberer wirkt Ich weiß, ich habe gefragt, wie man das macht: nicht, aber die Geschwistermethode scheint einfach sauberer zu sein – Kordonme

+0

froh, dass es euch gefällt :) es ist auch kürzer! –

+1

Wo Riks wie ein Charme. Vielen Dank! – nickb

6

Wenn Sie nicht() mit einigen anderen Selektoren kombinieren möchten, können Sie add():

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

Davon würden alle Links Fadeout, aber das eine geklickt haben, und zusätzlich einige ausgewählte ids Fadeout und Klassen.

Verwandte Themen