按父项数量的顺序运行each()函数

时间:2014-03-24 16:31:51

标签: javascript jquery

我需要为匹配.myClass的每个元素运行一次函数 - 但它需要按每个元素有多少个父元素的顺序运行。

$('.myClass').each(function(index){
  //my code
});

我唯一能想到的就是在那个基于each()附加数据排序属性的parents().length()函数之前做另一个{{1}}函数,但肯定有更好的方法?

1 个答案:

答案 0 :(得分:4)

map父项的数量以及对象数组的元素。然后对其进行排序并迭代结果。

var els = $('.myClass');

var data = els.map(function(index, el){
  return {el: el, pars:$(el).parents().length};
}).toArray()
  .sort(function(a,b) {
    return a.pars - b.pars;
});

$.each(data, function(i, obj) {
    var el = obj.el;
    // do something with el
});