私は素晴らしい jQuery Isotope プラグイン (http://isotope.metafizzy.co/) を使用していますが、並べ替えの作成に問題があります。これは、Isotope 自体に関係するというよりも、JavaScript の問題です。
問題は、並べ替えデータを動的に構築していることです。そこで、sortData を作成する関数を作成しました。以下に例を示します。
function getSortData(){
sortData = {};
var sorts = ['symbol', 'number', 'score', 'name'];
for (var i in sorts) {
sortData[sorts[i]] = function($elem) {
console.log(sorts[i]);
return parseInt($elem.find('.'+ sorts[i]).text());
}
}
return sortData;
}
したがって、問題は、 getSortData() 関数全体が実行された後に、内部の無名関数が常に実行されることです。sort[i] 変数に割り当てられている sorts 配列の最後の項目になります。
これは、次のフィドルに示されています: http://jsfiddle.net/xzZR4/ 「名前」項目が常にコンソールに出力されることがわかります。
正しいソート名を渡すことができる getSortData オブジェクトを作成する別の方法は考えられません。
アイデアのある人はいますか?