我在标准的HTML 4.01 Transitional页面中有一个html表:
<table>
<thead>
<tr>
<th>Col 1</th>
<th>Col 2</th>
<th>etc...</th>
</tr>
</thead>
<tbody id="tableBodyID">
<tr class="rowElement" data-element="some-data-here">
<td>Some Table Data</td>
<td>Some More Table data</td>
<td>etc.</td>
</tr>
<tr class="rowElement" data-element="some-data-here">
<td>Some Table Data</td>
<td>Some More Table data</td>
<td>etc.</td>
</tr>
</tbody>
</table>
我想循环遍历所有行并获取data-element字段中的“data”,并使用JQuery将其放入变量中。我尝试过.children(),. data()和.each()的多种变体,但是无法检索“数据”元素。
我已经尝试过(在$(document).ready()块中...):
$('tbody > tr').each(function() {
alert( $(this).data('element')); // CORRECTION - this works.
});
$('tbody').children().each(function() {
alert( $(this).data('element')); // CORRECTION - this works
});
$('.rowElement').each(function(i, obj) {
rowValue = $(this);
alert(rowValue.data('element')); // CORRECTION - this works
});
欢迎任何帮助。我使用的是HTML 4.01和JQuery 1.7.1。我一直在Firefox中测试,但需要支持其他标准浏览器Firefox,Opera,Safari,Chrome和IE8 +。
(针对轻微的语法更改进行了编辑)
实际问题是一个案例问题,请参阅下面的评论。问题已解决。
答案 0 :(得分:2)
这对我有用:
$('table').find('tbody > tr').each(function() {
alert( $(this).data('element'));
});
(但可能不是最有效的方式)
答案 1 :(得分:1)
使用.map
和.get
,您可以将每个tr
映射到element
数据属性,以便获取这些值的数组。对于选择器,ID是最直接的,因为它直接指向tbody
元素,您想要tr
个后代:http://jsfiddle.net/zeFGW/。
var elementValues = $("#tableBodyID tr.rowElement").map(function() {
return $(this).data("element"); // replace each `tr` with its `element` data
}).get(); // turn jQuery object into an array
答案 2 :(得分:1)
你的逻辑/调用对我有用,你在语法上有一些问题,('element');
之后的括号应该是('element'));
而选择器也需要引用,tbody缺少应该是('tbody')
等。
jsfiddle。 (注意我将alert替换为console.log调用)
在chrome 17中测试。
您的代码是否与问题中发布的代码不同?