单击子元素时,向元素的兄弟添加属性

时间:2016-07-14 08:50:56

标签: javascript jquery

我有一个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>元素的兄弟。

3 个答案:

答案 0 :(得分:2)

要执行此操作,您可以使用closest()查找tr的父button,然后find()来获取td,如下所示:< / p>

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

如果您希望使用{1}},那么您可以获取父siblings()并使用td

siblings()

请注意,如果您愿意,此版本不会将该属性添加到第一个$('button').click(function() { $(this).closest('td').siblings().attr('foo', 'bar'); }); 元素。

答案 1 :(得分:1)

您可以使用$('button').click(function(){ $(this).closest('tr').find('td').attr('someattr','attrval'); }); 方法遍历最近的tr元素,然后在其中找到IBAction

Description

答案 2 :(得分: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");
});