【发布时间】:2013-08-02 20:56:52
【问题描述】:
不确定,为什么它不起作用。我参考了一堆堆栈溢出的答案,但似乎没有什么不同。我只是想通过 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;
})
【问题讨论】:
-
我没有看到你在哪里有一个名为
reSort的函数,用于$('.searchMe').sort(reSort),或者你在哪里定义了一个名为reSort的 jQuery 插件,用于$('.searchMe').reSort(function (a, b) {。 -
...您的意思是
function reSort(a, b) {...而不是$('.searchMe').reSort(function (a, b) {? -
仅供参考,您可以使用
return contentA.localeCompare(contentB)。 -
如果您打算进行数字比较,则需要将数字字符串转换为数字。所以
var contentA = +$(a).attr('data-sortStart')...等等。这意味着不再有.localeCompare()。 -
是的,比较相同小数位的数字字符串时没有必要。但如果它们不相等,则例如字符串
"10"被认为低于字符串"2"
标签: javascript jquery sorting search append