获取每个第一个子文本并设置为每个父ID

时间:2013-03-26 10:28:17

标签: jquery

我有一张桌子

<tbody>
    <tr>
        <td>101</td>
        <td>37,17 m<sup>2</sup></td>
        <td>1</td>
        <td>3</td>
        <td></td>
    </tr>
    <tr>
        <td>102</td>
        <td>30,53 m<sup>2</sup></td>
        <td>1</td>
        <td>2</td>
        <td></td>
    </tr>
    <tr>
        <td>103</td>
        <td>10,53 m<sup>2</sup></td>
        <td>1</td>
        <td>5</td>
        <td></td>
    </tr>
</tbody>

并且我想从第一个开始获取文本并将其设置为父级的id以像这样结束

<tbody>
    <tr id="101">
        <td>101</td>
        <td>37,17 m<sup>2</sup></td>
        <td>1</td>
        <td>3</td>
        <td></td>
    </tr>
    <tr id="102">
        <td>102</td>
        <td>30,53 m<sup>2</sup></td>
        <td>1</td>
        <td>2</td>
        <td></td>
    </tr>
    <tr id="103">
        <td>103</td>
        <td>10,53 m<sup>2</sup></td>
        <td>1</td>
        <td>5</td>
        <td></td>
    </tr>
</tbody>
我写了类似的东西

var td = $('tobody td:first-child').text(); - returns 101102103

$('tobody tr').attr('id', td); - returns 101102103 for each tr

如何分开这个?

5 个答案:

答案 0 :(得分:3)

只需迭代所有第一个<td>元素,找到相应的父元素并设置其id属性:

$('td:first-child').each(function() {
  $(this).parent().attr('id', $(this).text());
});

如果你有更多的表或更大的文档,锚定操作是有意义的:

$('#table-id').find('td:first-child').each(function() {
    var $this = $(this);

    $this.parent().attr('id', $this.text());
});

答案 1 :(得分:1)

您可以使用each来迭代td并将id分配给父tr

<强> Live Demo

$('td:first-child').each(function(){    
   $(this).closest('tr').attr('id', $.trim($(this).text()));
});

答案 2 :(得分:1)

试试这个:

$('tobody tr').each(function(){
  $(this).attr('id', $(this).find("td:eq(0)").text().trim());
});

或者简单地说:

$('tbody tr').attr('id' , function(){
  return $(this).find("td:eq(0)").text().trim();
});

答案 3 :(得分:0)

$('tr').each(function() {
  var $this = $(this),
      theId = $this.find('td').first().text();  
  $this.attr('id', theId);
});

请注意,数字ID仅在HTML5中有效

答案 4 :(得分:0)

遍历.each()中的<tr>

$('tbody tr').each(function(){
   var txt = $.trim($('td:first',this).text());
   $(this).attr('id', txt);
});

CHECKOUT THE FIDDLE