4

我不明白为什么 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"));
});

然后我得到正确的输出。但我认为这不是一个正确的方法,所以任何人都可以告诉我哪里出错了。

我也读了这个答案,但我仍然不清楚

谢谢

4

3 回答 3

4

.attr()返回第一个元素的属性。如果您想要所有匹配元素的属性,请使用map

var titles = $('#myTable tr td:eq(3) abbr').map(function() {
    return $(this).attr('title');   // or just `return this.title`
}).get();
于 2013-03-03T08:32:45.347 回答
0

这是一个非常简单的方法。从表 myTable 中获取所有 abbr 元素并给出它们的标题。

http://jsfiddle.net/cngpd/

$("abbr", $("#myTable")).each(function () {
    console.log($(this).attr('title'));
})
于 2013-03-03T08:43:57.207 回答
0

这样你就可以为每个元素获得它:

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>
于 2019-03-06T11:30:45.123 回答