在这个页面上,我使用 jQuery Isotope 插件来安排艺术家在音乐节的阵容中。我希望艺术家按演出日期排序。我已按照说明向同位素选项对象添加了sortBy
属性getSortDate
。创建同位素容器的代码(in common.js
)是:
var container = $(containerSelector);
var isotopeOptions = {
itemSelector: itemSelector,
layoutMode: 'fitRows',
onLayout: function() {
this.css('visibility', 'visible');
},
getSortData: {
perfDate: function (element) {
// parse out the performance date from the css classes
var classList = element.attr('class').split(/\s+/);
var dateClassPrefix = 'date-';
$.each(classList, function(index, cssClassName){
if (cssClassName.substring(0, dateClassPrefix.length) === dateClassPrefix) {
// Should be a date in format 'yyyy-MM-dd'
var dateString = cssClassName.substring(dateClassPrefix.length);
return SF.parseDate(dateString).getTime();
}
});
}
},
sortBy: 'perfDate'
};
container.imagesLoaded(function() {
container.isotope(isotopeOptions);
});
如您所见,艺术家未按演出日期排序。我已经调试到我的排序函数并验证它返回以下值
- 鲍勃(4 月 15 日)=> 1334444400000
- 鲍勃马利(4 月 20 日)=> 1334876400000
- 鲍勃·迪伦(4 月 26 日)=> 1335394800000
所以艺术家应该按照上面的顺序显示。奇怪的是,如果我将排序功能替换为按名称按字母顺序对艺术家进行排序的功能,例如
perfDate: function (element) {
return element.find('.artistTitle a').text();
},
然后艺术家以与排序函数返回的值相同的顺序显示。为什么按名称排序有效,但按演出日期排序却无效?