Wie bekomme ich den td-Wert aus einer Tabelle?

8

Ich habe eine Tabelle in diesem Format.

%Vor%

Ich habe eine Funktion geschrieben, um ein anderes div auf der Maus anzuzeigen.

%Vor%

Jetzt muss ich den 'id' Wert über die Maus bekommen.
Ich habe diese Funktion versucht, aber es gibt einen Nullwert zurück ...

%Vor%

Kann mir jemand helfen?

    
saran 05.03.2012, 10:42
quelle

6 Antworten

12

Erklärung

Ich denke, die anderen machen es dir zu schwer.

Das Problem mit Ihrem Code besteht darin, dass Sie versuchen, ein td innerhalb eines td zu finden. Wenn Sie $(this) im Kontext einer Ereignisfunktion ausführen, bezieht sich dies auf das Element, dessen Ereignis ausgelöst wurde.

%Vor%

Wenn Sie jedoch die richtige Baumtraversierungsfunktion siblings und die Pseudoklasse %Co_de% würden Sie in Ihrem Bemühen erfolgreich sein.

%Vor%

Das würde dir alle :hidden s geben, die versteckt sind. Da Ihr Beispiel nur eine Spalte enthielt, die ausgeblendet war, sollte es ausreichen.

Wenn Sie ein bestimmtes Geschwister möchten, können Sie entweder eine Klasse hinzufügen oder ein Combo td verwenden.

%Vor%

Beispiel

Der einfachste Weg, um die ID des dritten und letzten :nth-child(n):hidden zu erhalten, ist die Verwendung einer der Pseudoklassen

Sie können auch Ihre eigene Klasse definieren, wie :last-child und dann

%Vor%

Hier ist ein funktionierendes JSFiddle-Beispiel | Code

%Vor%

Beachten Sie die Verwendung des Selektors, wo ich stattdessen myclass verwende, so dass die Ereignisse nur ausgelöst werden müssen, sobald Sie eine Tabellenzeile ein- und ausblenden. Dies ermöglicht mir auch, eine Kontextreferenz zu verwenden. Jetzt verweist table tr auf die Zeile, in der sich der Benutzer befindet, und alle seine untergeordneten Elemente ( $(this) s) sind darin enthalten.

Ich verwende auch einen Selektor mit einem zweiten Parameter , der den Kontext meiner Auswahl definiert. Standardmäßig ist es das gesamte Dokument.

Dies beschränkt die Auswahl auf das Element, über das der Benutzer schwebt, und auf seine untergeordneten Elemente. Err ... damit meine ich nicht die Benutzer Kinder, sondern die Kinder des Elements.

%Vor%

entspricht: td

Referenzen

ShadowScripter 05.03.2012, 12:02
quelle
1

Anstatt inline css "visibility: hidden" zu verwenden, fügen Sie dem Objekt "hidden" eine Klasse hinzu und fügen Sie in Ihrer .css-Datei Folgendes hinzu:

%Vor%

Dadurch wird Ihr Code funktionieren (denke ich) und Ihr Mark-up wird viel besser aussehen.

    
ninja 05.03.2012 10:44
quelle
1

Wenn du visibility:hidden anstelle von display:none wirklich willst, benutze einen Filter ( Edit: als Crab Bucket notiert, finde nur Nachkommen, wenn du die Geschwister suchst):

%Vor%

AFAIK gibt es keinen direkten Weg, nur Selektoren zu verwenden. (Sie könnten das "style" -Attribut überprüfen und eine teilweise Übereinstimmung durchführen, aber das bricht, wenn die style -Eigenschaft aus einer Klasse oder CSS-Datei stammt)

    
mgibsonbr 05.03.2012 10:51
quelle
0

Die Funktion find() funktioniert für die Nachkommen, so dass $(this).find das Element hovered nicht findet Probieren Sie

aus %Vor%     
Crab Bucket 05.03.2012 10:52
quelle
0

Sie können einfach den jQuery-Attributselektor und die ".nextAll ()" - Traversierungsmethode verwenden, vorausgesetzt, dass die "id" -Spalte die einzige versteckte Spalte ist. Versuchen Sie Folgendes:

%Vor%

Bearbeiten: Korrigierter Selektor, thx zu @mgibsonbr, um zu erwähnen, dass der Selektor ": hidden" das Sichtbarkeitsattribut

nicht abdeckt     
cscharr 05.03.2012 10:50
quelle
0

Fügen Sie eine eigene Klasse für Ihre versteckten td Tags hinzu: class="divOne versteckt". Jetzt mache folgendes:

%Vor%     
me_digvijay 05.03.2012 11:27
quelle

Tags und Links