Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/417.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/89.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript jQuery按标记对元素重新排序_Javascript_Jquery_Html - Fatal编程技术网

Javascript 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

我目前正试图使用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>
    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");