Learning jQuery 1.3 (第 3 版には含まれていません) の第 7 章に触発されて、この並べ替えルーチンをまとめました。
var rows = $table.find('tbody > tr').get();
$.each(rows, function(index, row) {
var $cell = $(row).children('td').eq(column);
$(row).data('sortKey',$cell);
});
rows.sort(function(a, b) {
if ($(a).data('sortKey') < $(b).data('sortKey'))
return -sortDirection;
if ($(a).data('sortKey') > $(b).data('sortKey'))
return sortDirection;
return 0;
});
しかし、すべての行$(a)
で andを使用するのは好きではありません。$(b)
Q:キャッシュする方法はあり$(a)
ます$(b)
か? 著者は、代わりにexpandoと呼ぶものを使用しています。
通常の DOM 属性ではなく DOM 要素に関連付けられたこの種のプロパティは、expando と呼ばれます。テーブルの行要素ごとに 1 つ必要なので、これはキーを格納するのに便利な場所です。これで、コンパレータ関数内でこの属性を調べることができ、並べ替えが著しく高速になりました。