假设我有一张桌子
<table id="data-table" id="test">
<thead>
<tr>
<th>value1</th>
<th>value2</th>
<th>value3</th>
<th>value4</th>
</tr>
</thead>
<tbody>
<tr>
<td id="class1"><%= value.valueOne() %></td>
<td id="class2"><%= value.valueTwo() %></td>
<td id="class3"><%= value.valueThree() %></td>
<td id="class4"><%= value.valueFour() %></td>
</tr>
<%
}
%>
</tbody>
</table>
如果点击特定的<td>
,如何将<tr>
的{{1}}值作为单独的变量?我尝试使用以下代码片段,但它没有帮助
<tr>
答案 0 :(得分:2)
我认为您说要在td
被点击的任何内容中获取tr
元素的每个值。
您可以使用find
,map
和get
执行此操作以获取值数组:
$('#test tbody tr').click(function() {
var values = $(this).find('td').map(function() {
return $(this).text();
}).get();
});
jsFiddle(请注意,我已删除了id
元素中的table
个值之一:您不能拥有两个......)
答案 1 :(得分:2)
您可以使用on
方法将tr
上的点击事件委托给#data-table
。
然后,您可以使用$(this).find('td')
获取当前单击元素中的所有td元素,并将其内部内容映射到数组。
$('#data-table').on('click', 'tr', function() {
var values = $(this).find('td').map(function() {
return $(this).text();
});
alert(values[0]); // first td
alert(values[1]); // second td
alert(values[2]); // third td
alert(values[3]); // fourth td
});
小提琴:http://jsfiddle.net/cPpzY/
您还可以将单元格存储在不同的变量中,假设您只想选择前两个单元格,例如:
$('#data-table').on('click', 'tr', function() {
var first = $(this).find('td:eq(0)').text();
var second = $(this).find('td:eq(1)').text();
alert(first);
alert(second);
});
在这种情况下,我们使用:eq()
选择器来选择特定索引处的元素。
答案 2 :(得分:0)
您似乎正在使用模板引擎生成tr
元素列表,在这种情况下,您需要使用class
属性而不是id
,因为元素的ID必须是独特
<td class="class1"><%= value.valueOne() %></td>
<td class="class2"><%= value.valueTwo() %></td>
<td class="class3"><%= value.valueThree() %></td>
<td class="class4"><%= value.valueFour() %></td>
然后点击行
$('tr').click(function(){
var v1 = $(this).find('.class1').text();
var v2 = $(this).find('.class2').text();
var v3 = $(this).find('.class3').text();
var v4 = $(this).find('.class4').text();
})