我不明白为什么attr()只被调用一次,
我的HTML是
<table id="myTable">
<tbody>
<tr>
<td>...</td>
<td>...</td>
<td>
<abbr title='first'>Demo1</abbr>
</td>
</tr>
<tr>
<td>...</td>
<td>...</td>
<td>
<abbr title='second'>Demo2</abbr>
</td>
</tr>
.
.
.
</tbody>
</table>
现在我想获得所有abbr
的“标题”,所以写了以下查询
$(document).ready(function () {
console.log($('#myTable tr td:nth-child(3) abbr').attr("title"));
}
所以,它应该归还给我
first
second
.
.
.
但输出仅为"first"
,
但如果写
var oRows = $('#myTable tbody tr');
$.each(oRows, function (i) {
console.log($(this).children('td:nth-child(5)').children().attr("title"));
});
然后我得到正确的输出。 但我不认为这是一种正确的做法,所以任何一个机构都能告诉我我哪里出错了。
我也读了this回答,但我还不清楚
谢谢
答案 0 :(得分:4)
.attr()
返回第一个元素的属性。如果您需要所有匹配元素的属性,请使用map
:
var titles = $('#myTable tr td:eq(3) abbr').map(function() {
return $(this).attr('title'); // or just `return this.title`
}).get();
答案 1 :(得分:0)
这是一个非常简单的方法。从表myTable中获取所有abbr元素并给出它们的标题。
$("abbr", $("#myTable")).each(function () {
console.log($(this).attr('title'));
})
答案 2 :(得分:0)
This way you get it for every element:
JS
$(".ele_title").click(function(){
var value = $(this).attr('title');
alert(value);
});
HTML
<abbr class='ele_title' title='first'>Demo1</abbr>
<abbr class='ele_title' title='second'>Demo1</abbr>
<abbr class='ele_title' title='third'>Demo1</abbr>