我有一个简单的示例表,其中包含每个表行的数据属性。
<table id="example">
<tr data-sample="1">
<th>Fox</th>
<th>Sam</th>
<th>Ted</th>
</tr>
<tr data-sample="2">
<td>Bill</td>
<td>Nick</td>
<td>Pal</td>
</tr>
<tr data-sample="3">
<td>El</td>
<td>Pal</td>
<td>Tea</td>
</tr>
</table>
我正在尝试使用以下代码获取所有data-sample
属性:
('#example tr').each(function () {
console.log(this.data('sample'));
});
我得到一个“this.data不是函数”错误。这让我明白了.each jquery循环this
返回一个DOM元素,而不是一个函数或者我可以使用一个选择器的任何东西(如果我只打印出this
,我得到一个表的列表行和他们的孩子)。有没有办法让this
成为选择器? ('#example').children('tr')
和('#example').find('tr')
会得到相同的结果。
答案 0 :(得分:2)
Jquery语法错误
this
不是jquery对象。使用$(this).data('sample')
$('#example tr').each(function () {
console.log($(this).data('sample'));
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
I have a simple example table that has data-attributes for every table row.
<table id="example">
<tr data-sample="1">
<th>Fox</th>
<th>Sam</th>
<th>Ted</th>
</tr>
<tr data-sample="2">
<td>Bill</td>
<td>Nick</td>
<td>Pal</td>
</tr>
<tr data-sample="3">
<td>El</td>
<td>Pal</td>
<td>Tea</td>
</tr>
</table>
或使用attr()
$('#example tr').each(function () {
console.log($(this).attr('data-sample'));
});
答案 1 :(得分:0)
您的代码中有两个问题:
1)您需要将DOM对象转换为jquery对象以便与.data()
2)你在.data()
传递了错误的属性参数。它应该是sample
:
$('#example tr').each(function () {
console.log($(this).data('sample'));
});
答案 2 :(得分:0)
有两种方法可以做到这一点 -
<强> #1 强>
$('#example tr').each(function () {
console.log($(this).data('sample'));
});
<强> #2 强>
$('#example tr').each(function () {
console.log($(this).attr('data-sample'));
});
答案 3 :(得分:0)
检查
$(document).ready(function(){
$('#example tr').each(function () {
console.log($(this).attr("data-sample"));
});
});
如果您想获取行内容,请使用此
$('#example tr').each(function (i) {
alert($('#example tr[data-sample]')[i].innerText.split("\t"));
});