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)
。如果那不起作用,我不知道为什么。您是否正确复制/粘贴了上面的代码?