2017-01-02 2 views
1

Auswählen ich das folgende Markup habe:JQUERY die ersten <a> im ersten <td> ein <tr>

<tr> 
    <td> 
     <a>foo</a></td> 
    <td>bar</td> 
    <td> 
     <a class="delete-btn">delete</a> 
    </td> 
</tr> 

Jetzt habe ich schon auf Click-Ereignis mit Jquery $(".delete-btn") das Problem ist, dass das Click-Ereignis angeschlossen Handler benötigt den Text im ersten Element (foo).

Ich getthin es bereits mit diesem Aufruf:

$(this).closest("tr").children().first().children().first("a") 

aber ernst ... es sieht falsch: -/Vielleicht ein besserer Weg gibt es, dies zu erreichen?

+0

warum nicht ein vollständiges Beispiel mit einem Stapelüberlauf js Ausschnitt bereitstellen? –

+0

'$ (this) .closes ('tr'). Find ('td: erstes Kind a')'? –

+0

Sie sollten über [CSS-Selektoren] lesen (http://www.w3schools.com/cssref/css_selectors.asp). – djxak

Antwort

2

Ich mag diese auch nicht, aber ... es ist genau das, was Sie suchen:

$(this).closest("tr").find("> td:first-child > a"); 
2

Sie können :first Pseudo-Selektor Verwendung von jQuery machen.

  • $('tr td:first a:first') (für die erste <tr> nur)
  • $('tr').find('td:first a:first') (für jeden <tr>)

Beispiel:

In diesem Fall würde das gesamte Selektor sein

$(document).ready(function(){ 
 

 
    $('.delete-btn').click(function(){ 
 
     $('tr').find('td:first a:first').hide(); 
 
    }) 
 

 
});
table, tr, td { 
 
border: 1px solid rgb(191,191,191); 
 
border-collapse: collapse; 
 
} 
 

 
td { 
 
padding: 12px; 
 
} 
 

 
.delete-btn { 
 
cursor: pointer; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 

 
<table> 
 
<tr> 
 
<td><a>foo</a></td> 
 
<td>bar</td> 
 
<td><a class="delete-btn">delete</a></td> 
 
</tr> 
 
<tr> 
 
<td><a>foo</a></td> 
 
<td>bar</td> 
 
<td><a>baz</a></td> 
 
</tr> 
 
</table>

+0

Yo tippte mich in die richtige Richtung. Und das Code-Snippet ist gut gemacht! Mit diesem Selektor würde jedoch immer die erste der ersten Zeile zurückgegeben. Wenn die Tabelle mehr als eine Zeile hat, muss ich die erste von jedem zurückgeben. –

+0

Vielleicht war ich nicht klar genug über meine Absicht. Ich habe einen Tisch mit mehreren Reihen. Wenn ich auf den Link in der letzten Zelle klicke, benötigt der Event-Handler den Text des ersten Links in der ersten Zelle dieser bestimmten Zeile. @ MaxArt und David Thomas erreichen dies. –