2

我在一个变量中有这个信息

"sortorder": "obj,exp,qual,edu,int,ref,img

我也有相应的 div id,但顺序是乱序的。

<div id = "qual">info</div>
<div id = "exp">info</div>
<div id = "edu">info</div>
<div id = "int">info</div>
<div id = "ref">info</div>
<div id = "img">info</div>
<div id = "obj">info</div>

现在我必须根据排序顺序对 div 进行排序。第一个应该是obj,第二个应该是这样的exp

<div id="obj">info<div>
<div id="exp">info<div>
<div id="qual">info<div>
<div id="edu">info<div>
<div id="int">info<div>
<div id="ref">info<div>
<div id="img">info<div>

如何使用 jquery 做到这一点?

4

1 回答 1

2
var sortorder = "obj,exp,qual,edu,int,ref,img".split(',');

$('div').sort(function(a, b){
    return sortorder.indexOf(a.id) > sortorder.indexOf(b.id);
}).appendTo('body');

http://jsfiddle.net/JYnMd/

老版本的 IE 不支持 Array 对象的indexOf方法,为了支持那些伪浏览器,你可以使用 jQuery$.inArray()实用函数:

$('div').sort(function(a, b){
  return $.inArray(a.id, sortorder) > $.inArray(b.id, sortorder);
}).appendTo('body'); 
于 2013-04-29T16:43:32.817 回答