2016-07-14 3 views
0

ich eine table mit mehreren Spalten angeklickt wird, die wie folgt aussieht:ein Attribut zu einem Geschwister von Element hinzufügen, wenn das Kind Element

<tr role="row" class="odd"> 
    <td class="sorting_1"> 
     <button id="1" class="btn btn-info btn-sm _edit_btn">Edit</button> 
    </td> 
    <td>1</td> 
    <td>Asht</td> 
    <td>5</td> 
    <td>16</td> 
    <td>5</td> 
    <td>3</td> 
    <td>3</td> 
    <td>2</td> 
    <td>Sughd</td> 
    <td>2</td> 
    <td>3505207000000</td> 
    <td>3</td> 
    <td>2</td> 
    <td>15</td> 
    <td>5</td> 
</tr> 
zu jeder <td> ein Attribut Was ich tun möchte, ist hinzuzufügen, Element auf der Schaltfläche klicken Sie auf die Schaltfläche, die auf der ersten <td> der Tabelle befindet.

Ich benutze jQuery für diesen Zweck. Ich habe versucht, es mit der Geschwister-Funktion zu tun, aber es funktioniert nicht, da die <td> Elemente sind keine Geschwister der <button> Element, sondern der anderen <td> Elemente.

+0

„* [Es] funktioniert nicht wie die' ' Elemente sind nicht Geschwister des' '

+0

Sie möchten das Attribut zu jedem td hinzufügen, das nicht das erste ist? – Roysh

Antwort

2

Um dies zu tun, Sie closest() verwenden können die Eltern tr der button zu finden, dann find() die td zu erhalten , wie folgt aus:

$('button').click(function() { 
    $(this).closest('tr').find('td').attr('foo', 'bar'); 
}); 

Wenn Sie siblings() verwenden würde es vorziehen, wie Sie erwähnt haben, dann können Sie die Eltern erhalten 0.123.und verwenden siblings() dazu:

$('button').click(function() { 
    $(this).closest('td').siblings().attr('foo', 'bar'); 
}); 

Beachten Sie, dass diese Version das Attribut auf dem ersten td Element nicht hinzugefügt werden, wenn das Ihre Absicht war.

1

Sie können zum nächsten tr Elemente durchqueren .closest() Methode und dann td darin finden:

$('button').click(function(){ 
    $(this).closest('tr').find('td').attr('someattr','attrval'); 
}); 
1

Sie diese für zwei Fälle verwenden:

$("button").click(function(e) { 
    //if you want to add attribute to all tds then use this line 
    $(this).closest("tr").find("td").attr("your-attribute", "value"); 

    //if you want to add attribute to all tds except the first one then use this line 
    $(this).closest("tr").find("td:not(.sorting_1)").attr("your-attribute", "value"); 
}); 
Verwandte Themen