jQuery的each()函數是否是非阻塞的?jQuery each()非阻塞?
在下面的例子中,我預計「每個測試」都會先記錄下來,但是在每個測試中,「每個測試」都會先記錄下來。
所以這會導致循環在返回錯誤之前運行到正文(有時是文檔)元素。
我只是試圖讓一個共同的家長包裝,或者如果兩個元素(firstp和lastp)是兄弟姐妹,然後包裝這些。
但是,我主要關心each()函數的性能以及它是否是非阻塞的。
while(firstp[0] !== lastp[0]){
//If parents are siblings, this will do for wrapping.
var isS = false;
firstp.siblings().each(function(index, el){
console.log("test in each");
if(jQuery(el)[0] === lastp[0]){
isS = true;
return true;
}
});
console.log("test out of each");
if(isS === true){ break; }
firstp = firstp.parent();
lastp = lastp.parent();
}
編輯:
對不起球員。這是一場虛驚。保羅是對的。我的HTML實際上有兩個匹配firstp的元素。我沒有意識到這一點,所以第一個沒有兄弟姐妹,導致了錯誤。我一直在看第二個元素。
但是,我在過程中學到了一些東西,所以謝謝你花時間回答。
當「測試出每一個」被記錄,你也看到登錄控制檯「在每個測試」? – ShankarSangoli
@Shankar是的,這兩個文本都被記錄下來,只是沒有按我期望的順序。也許我錯過了一些明顯的東西。 –
@Senica:當你的控制檯日誌消息在他們的文本中沒有顯示任何明顯的關係時,我不認爲你可以對「命令」做出斷言。消息可以從外部循環中的不同迭代中打印出來,你永遠不會知道。 –