2013-03-10 49 views
1

好日子所有,选择值 - jQuery的

我有行和值的表像下面

<tr id="value_12"> 
    <td>firstanme_1</td> 
    <td>lastname_1</td> 
</tr> 
<tr id="value_14"> 
    <td>firstanme_2</td> 
    <td>lastname_2</td> 
</tr> 

,我使用jQuery是(这是错误的)。

$('#table_id tr').each(function() { 
    serializedData += '&' + $(this).attr('id') + '=' + $(this).attr('id')+'_'+$(:first_child).text(); 
}); 

我期待与TR一起只提取每个TR的第一个名字即属性的serialisedData字符串作为最后一部分(最后一个值,分隔符“_”后)。

我可能是像$(this).firstchild()。text()..但它似乎不工作。 有人可以请帮助以正确的方式得到第一个孩子在这种情况下。

回答

6

替换此

$(:first_child).text(); 

随着

$(this).find("td:first").text(); 

或者或者

$(this).find("td:eq(0)").text(); 

这将解决您的问题

1

您选择:first_child是错误的使用情况,您可以通过使用功能children()获得TR的子女和实现这一目标“:第一个”作为一个选择只拿到第一个是这样的:

$('#table_id tr').each(function() { 
    serializedData += '&' + $(this).attr('id') + '=' + $(this).attr('id')+'_'+$(this).children(":first").text(); 
      }); 

看到的jsfiddle: http://jsfiddle.net/2t5J2/1/

0

获得TR的第一个孩子,你可以做

$('#table_id tr').each(function() { 
    var firstName = $("td", tr)[0].val(); 
    var id = $(tr).attr('id').split("_")[1]; 
}) 

这应该给你名字和身份证。

+1

你'[0]'是不正确 - 它提取原始DOM元素。也没有称为'tr'的变量。 – Alnitak 2013-03-10 10:27:43

0

使用each方法COLLEC t数据,然后使用jQuery $.param函数构造查询字符串。好处是,这将是正确编码为您提供:

var params = {}; 
$('table tr[id^="value_"]').each(function() { 
    params[this.id] = $(this).find('td:first').text(); 
}); 
alert($.param(params)); // alerts: value_12=firstanme_1&value_14=firstanme_2 

http://jsfiddle.net/EwSsu/

0

使用$(本)。儿童(“:第一个”)。文本()用于获取第一个孩子的文本。

serialData+='&' + $(this).attr('id') + '=' + $(this).attr('id')+'_'+$(this).children(":first").text(); 
0

使用此获得第一个TD的价值:

$(this).find("td:first-child").text();