Javascript 按父函数数的顺序运行每个()函数

Javascript 按父函数数的顺序运行每个()函数,javascript,jquery,Javascript,Jquery,我需要为每个匹配.myClass的元素运行一次函数,但它需要按照每个元素有多少父元素的顺序运行 $('.myClass').each(function(index){ //my code }); 我能想到的唯一一件事是在该函数之前再执行一个each()函数,该函数根据parents().length()添加一个数据排序属性,但肯定有更好的方法吗?将父对象的数量和元素映射到一个对象数组中。然后对其排序并迭代结果 var els = $('.myClass'); var data = els

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

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

我能想到的唯一一件事是在该函数之前再执行一个
each()
函数,该函数根据
parents().length()
添加一个数据排序属性,但肯定有更好的方法吗?

将父对象的数量和元素映射到一个对象数组中。然后对其排序并迭代结果

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
});

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
});

是否有什么阻止您在当前的
each()
调用中使用
parents().length
?否,但我需要在调用该函数之前对元素进行排序。或者通过其他方式按父对象数的顺序运行函数。@FrédéricHamidi但是它如何帮助按父对象数的顺序运行每个回调呢?这是阻止您在当前的
each()
调用中使用
parents().length
的原因吗?否,但是我需要在调用该函数之前对元素进行排序。或者通过其他方式按父对象数的顺序运行函数。@FrédéricHamidi但它如何帮助按父对象数的顺序运行每个回调。此时使用
el
执行jquery操作的正确语法是什么
$(el)
el
不起作用。@sanjaypoyzer:
el
是一个DOM元素,所以要使用jQuery方法,请将它传递给jQuery函数
$(el)
。如果那不起作用,我不知道为什么。您是否正确复制/粘贴了上面的代码?谢谢。此时使用
el
执行jquery操作的正确语法是什么
$(el)
el
不起作用。@sanjaypoyzer:
el
是一个DOM元素,所以要使用jQuery方法,请将它传递给jQuery函数
$(el)
。如果那不起作用,我不知道为什么。您是否正确复制/粘贴了上面的代码?