我目前正尝试按照与每个使用jQuery关联的rel="1234"
标记重新排序无序的元素列表。
但是,我当前的代码导致输出没有出现,我无法解决原因。有人可以帮忙吗?
我的jQuery代码是:
$(function(){
var elems = $('#test').children('li').remove();
elems.sort(function(a,b){
return parseInt(a.attr('rel')) > parseInt(b.attr('rel'));
});
$('#test').append(elems);
});
使用这样的基本标记:
<ul id="test">
<li rel="4112">blub</li>
<li rel="1422">blaaah</li>
<li rel="6640">hmmmm</li>
<li rel="2221">one more</li>
</ul>
答案 0 :(得分:1)
试试这个: -
$(function(){
var elems = $('#test').children('li'); // You dont need to remove the elements
elems.sort(function(a,b){
return +$(a).attr('rel') > +$(b).attr('rel'); // use attr on jquery object i.e $(a), $(b)
});
$('#test').append(elems); // This will take care of repositioning the elements.
});
答案 1 :(得分:0)
这就是你想要的
JS:
var elems = $('#test').children('li').remove();
elems.sort(function(a,b){
return parseInt($(a).attr('rel'), 10) > parseInt($(b).attr('rel'), 10);
});
$('#test').html(elems);
请注意,sort函数的“a”和“b”元素应视为jQuery对象。您还应指定parseInt()
答案 2 :(得分:0)
a
和b
是DOM元素,而不是jQuery对象。
用$()
包装它们来制作jQuery对象,或使用getAttribute("rel")
而不是.attr("rel")
。它需要更长的时间,但需要更少的开销。
另外,假设你想要一个数字排序,我会使用减法。
return a.getAttribute("rel") - b.getAttribute("rel");
过去有些浏览器在返回布尔值时遇到了问题。