Javascript jQuery按标记对元素重新排序
我目前正试图使用jQuery,通过与每个元素关联的Javascript jQuery按标记对元素重新排序,javascript,jquery,html,Javascript,Jquery,Html,我目前正试图使用jQuery,通过与每个元素关联的rel=“1234”标记,对无序的元素列表重新排序 但是,我当前的代码导致输出不出现,我无法找出原因。有人能帮忙吗 我的jQuery代码是: $(function(){ var elems = $('#test').children('li').remove(); elems.sort(function(a,b){ return parseInt(a.attr('rel')) > parseInt(b.att
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>
blub
废话
- hmmmm
- 再来一个
这就是你想要的
JS:
请注意,排序函数的“a”和“b”元素应被视为jQuery对象。您还应该指定parseInt()的基数
演示:试试这个:-
$(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.
});
a
和b
是DOM元素,而不是jQuery对象
使用$()
包装它们以生成jQuery对象,或者使用getAttribute(“rel”)
而不是.attr(“rel”)
。它稍微长一点,但需要的开销更少
此外,假设您需要数字排序,我将使用减法
return a.getAttribute("rel") - b.getAttribute("rel");
过去有些浏览器在返回布尔值时遇到问题。简单性很好+1.
return a.getAttribute("rel") - b.getAttribute("rel");