2016-07-14 3 views
0

У меня есть table с несколькими столбцами, который выглядит следующим образом:Добавить атрибут одноуровневый элемента, когда дочерний элемент щелкнул

<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> 

То, что я хочу сделать, это добавить атрибут к каждому <td> элемент на кнопку, нажав кнопку, которая расположена на самом первом <td> таблицы.

Я использую jQuery для этой цели. Я попытался сделать это, используя функцию братьев и сестер, но он не работает, поскольку элементы <td> не являются братьями и сестрами элемента <button>, а других элементов <td>.

+0

«* [Это] не работает, как' ' элементы не являются братьями и сестрами из' 'элемента

+0

вы хотите добавить атрибут к каждому td, который не является первым? – Roysh

ответ

2

Для этого вы можете использовать closest() найти родителя tr из button, то find() получить td , как это:

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

Если вы предпочитаете использовать siblings(), как вы упомянули, то вы можете получить родительский td и использовать siblings() на том, что:

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

Обратите внимание, что эта версия не добавит атрибут к первому td элемента, если это ваше намерение.

1

Вы можете пройти к ближайшему т.р. элементу с использованием .closest() метода, а затем найти td в нем:

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

Вы можете использовать это для двух случаев:

$("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"); 
}); 
Смежные вопросы