1

以下のような表があります(擬似コードのみ)

<table>
<tr><td>text11</td><td>text12</td><td><div customerid='1'>Customer 1</div></td></tr>
<tr><td>text21</td><td>text22</td><td><div>Customer 2</td></tr>
<tr><td><div customerid='2'>xxxx-yyyyy</div><td>text23</td><td>text33</td></tr>
</table>

テーブルの各行を繰り返し処理しています。上記の例に示すように、「customerid」などのカスタム属性を持つ行の要素を見つける必要があります。この検索の要件はほとんどありません。

  • このカスタム属性が表示されるセルは固定されていません
  • このカスタム属性が表示される HTML 要素のタイプは固定されていません。つまり、 $('div') などのセレクターは問題外です。
  • 検索は、テーブル レベルではなく、個々の行レベルで実行されます

これが私が試みていたもので、常に「未定義」を返すようです。

rows = $(self.find('tbody tr').each(function (rowIndex, element) {
  var keyValue = getKeyValue($(element));                  
}));

function getKeyValue(row){
  return row.attr('customerid');
}

.attr メソッドが機能していないようです。「行」が実際に正しいテーブル行であり、HTML も正しく、カスタム属性を持つ div を持つセルが含まれていることを確認するためにデバッグしました。任意の提案をいただければ幸いです。

ありがとう

4

1 に答える 1

3

属性セレクター[customerid]を使用して、この属性を持つ要素を見つけます。

たとえば、各行を反復処理する場合、次のことができます。

rows = $(self.find('tbody tr').each(function (rowIndex, element) {
    var keyValue = $(this).find("[customerid]").eq(0).attr("customerid");
}));

または、顧客 ID を持つすべての要素を見つけることから始めて、それらが表示される行を見つけるために逆方向に作業することもできます。

self.find('tbody tr [customerid]').each(function() {
    var keyValue = this.getAttribute("customerid");
    var $row = $(this).closest("tr");
});
于 2013-07-22T12:40:38.077 に答える