4

attr() が 1 回だけ呼び出される理由がわかりません。

私の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 に答える