我正在使用很棒的 jQuery Isotope 插件 (http://isotope.metafizzy.co/),但是我在创建排序时遇到了问题。这更像是一个 JavaScript 问题,而不是与 Isotope 本身有关的任何事情。
问题是我正在动态构建排序数据。所以我创建了一个生成 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] 变量。
这显示在这个小提琴中:http: //jsfiddle.net/xzZR4/ 您会看到“名称”项始终输出到控制台。
我想不出另一种方法来创建允许传递正确排序名称的 getSortData 对象。
有任何想法的人吗?