第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

.each()完成后調(diào)用jQuery函數(shù)

.each()完成后調(diào)用jQuery函數(shù)

幕布斯6054654 2019-11-25 14:42:06
在jQuery中,調(diào)用(或任何其他類型的迭代回調(diào))完成后,可以調(diào)用回調(diào)或觸發(fā)事件。.each()例如,我希望此“淡入淡出”完成$(parentSelect).nextAll().fadeOut(200, function() {    $(this).remove();});在進(jìn)行一些計算之前,在。之后插入新元素$(parentSelect)。如果現(xiàn)有元素仍然對jQuery可見,并且睡眠/延遲一些任意時間(每個元素200個)似乎最好是一種脆弱的解決方案,那么我的計算是不正確的。我可以輕松地.bind()為事件回調(diào)提供必要的邏輯,但是我不確定.trigger()在上述迭代完成之后如何干凈地調(diào)用。顯然,我無法在迭代內(nèi)調(diào)用觸發(fā)器,因?yàn)樗鼘⒂|發(fā)多次。在的情況下$.each(),我曾考慮過在data參數(shù)的末尾添加一些內(nèi)容(我會在迭代主體中手動查找),但我不想被迫這樣做,所以我希望還有其他一些優(yōu)雅之處控制有關(guān)迭代回調(diào)的流程的方法。
查看完整描述

3 回答

?
達(dá)令說

TA貢獻(xiàn)1821條經(jīng)驗(yàn) 獲得超6個贊

var elems = $(parentSelect).nextAll(), count = elems.length;


elems.each( function(i) {

  $(this).fadeOut(200, function() { 

    $(this).remove(); 

    if (!--count) doMyThing();

  });

});

請注意,.each()它本身是同步的 -調(diào)用.each()之后的語句僅在.each()調(diào)用完成后才執(zhí)行。但是,在迭代中開始的異步操作.each()當(dāng)然會以自己的方式繼續(xù)。這就是這里的問題:淡化元素的調(diào)用是由計時器驅(qū)動的動畫,并且這些動畫以自己的速度繼續(xù)進(jìn)行。


因此,上面的解決方案可以跟蹤淡出了多少個元素。每次調(diào)用.fadeOut()都會獲取完成回調(diào)。當(dāng)回調(diào)函數(shù)注意到所有涉及的原始元素都已計入回調(diào)時,可以放心地采取所有后續(xù)操作,以確保所有衰落都已完成。


這是一個有四年歷史的答案(目前為2014年)。一種現(xiàn)代的方法可能涉及使用Deferred / Promise機(jī)制,盡管以上內(nèi)容很簡單,并且應(yīng)該可以正常工作。


查看完整回答
反對 回復(fù) 2019-11-25
?
慕姐4208626

TA貢獻(xiàn)1852條經(jīng)驗(yàn) 獲得超7個贊

可能要晚了,但我認(rèn)為這段代碼行得通...


$blocks.each(function(i, elm) {

 $(elm).fadeOut(200, function() {

  $(elm).remove();

 });

}).promise().done( function(){ alert("All was done"); } );


查看完整回答
反對 回復(fù) 2019-11-25
?
嚕嚕噠

TA貢獻(xiàn)1784條經(jīng)驗(yàn) 獲得超7個贊

JavaScript是同步運(yùn)行的,因此您放置的任何內(nèi)容each()都不會運(yùn)行,直到each()完成。


考慮以下測試:


var count = 0;

var array = [];


// populate an array with 1,000,000 entries

for(var i = 0; i < 1000000; i++) {

    array.push(i);

}


// use each to iterate over the array, incrementing count each time

$.each(array, function() {

    count++

});


// the alert won't get called until the 'each' is done

//      as evidenced by the value of count

alert(count);

調(diào)用警報時,計數(shù)將等于1000000,因?yàn)橹钡絜ach()完成警報才會運(yùn)行。


查看完整回答
反對 回復(fù) 2019-11-25
  • 3 回答
  • 0 關(guān)注
  • 939 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號