我需要爲匹配.myClass
的每個元素運行一次函數 - 但它需要按每個元素有多少個父元的順序運行。按照父代數量的順序運行each()函數
$('.myClass').each(function(index){
//my code
});
我能想到這樣做的唯一的事情是做另一each()
功能只是一個附加基礎上,parents().length()
數據排序屬性,但肯定有一個更好的方法,然後在此之前?
我需要爲匹配.myClass
的每個元素運行一次函數 - 但它需要按每個元素有多少個父元的順序運行。按照父代數量的順序運行each()函數
$('.myClass').each(function(index){
//my code
});
我能想到這樣做的唯一的事情是做另一each()
功能只是一個附加基礎上,parents().length()
數據排序屬性,但肯定有一個更好的方法,然後在此之前?
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
});
謝謝。在那個時候用'el'做jquery事情的正確語法是什麼? '$(el)'和'el'不工作。 – sanjaypoyzer
@sanjaypoyzer:'el'是一個DOM元素,所以要使用jQuery方法,將它傳遞給jQuery函數'$(el)'。如果這不起作用,我不知道爲什麼。你是否正確複製/粘貼上面的代碼? –
啊,我很傻 - 很棒。乾杯。 – sanjaypoyzer
阻止您在當前的每個()調用中使用'parents().length'嗎? –
不,但我需要在調用該函數之前對元素進行排序。或者通過其他方式按照父母數量的順序運行該功能。 – sanjaypoyzer
@FrédéricHamidi但它如何幫助按父母數量的順序運行每個回調 –