不确定,为什么它不起作用。我引用了一堆堆栈溢出答案,但似乎没有任何区别。我只是想通过data-sortStart属性用class =“searchMe”对所有div进行排序。 data-sortStart部分工作正常,所以我在这个例子中没有包含该函数,但它基本上是一个for循环,它为循环中的每个连续div提供了一个+ = 1的data-sortStart。
这是我的代码:
$("#search_button").on("click", function() {
appendicize($('.searchMe').sort(reSort));
});
function appendicize(el){
var container = $('#whatWhat');
container.html('');
el.each(function(){
$(this).appendTo(container);
});
}
$('.searchMe').reSort(function (a, b) {
var contentA = $(a).attr('data-sortStart'),
contentB = $(b).attr('data-sortStart');
return (contentA < contentB) ? -1 : (contentA > contentB) ? 1 : 0;
})
答案 0 :(得分:0)
Crazy Train指出的解决方案如下:
$(#search_button).click(function() {
appendicize($('.searchMe').sort(reSort));
});
function appendicize(el){
var container = $('#whatWhat');
container.html('');
el.each(function(){
$(this).appendTo(container);
});
}
function reSort(a, b) {
var contentA = +$(a).attr('data-sortStart'),
contentB = +$(b).attr('data-sortStart');
return (contentA < contentB) ? -1 : (contentA > contentB) ? 1 : 0;
}
在reSort函数中的变量初始值设定项之前添加'+'将正确地将data-sortStart属性比较为整数而不是字符串(字符串10小于2)这解释了为什么我得到元素#10和#11排在#2元素之上。最初也没有调用reSort函数,因为我的编写方式如下:
$('.searchMe').reSort(function (a, b) {
而不是像这样:
function reSort(a, b) {
第一种方式是不必要的,因为当我调用函数时,我已经在上面传递了$('。searchMe'):
appendicize($('.searchMe').sort(reSort));
再次感谢疯狂的火车:)