我需要为匹配.myClass
的每个元素运行一次函数 - 但它需要按每个元素有多少个父元素的顺序运行。
$('.myClass').each(function(index){
//my code
});
我唯一能想到的就是在那个基于each()
附加数据排序属性的parents().length()
函数之前做另一个{{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
});