簡體   English   中英

將變量列表作為參數動態包含到 Jquery 函數中

[英]Dynamic include of a list of variables into a Jquery function as parameters

如果事先不知道變量的名稱和數量,如何將變量列表動態注入到函數中。 特別是:

我正在嘗試替換這個“硬編碼”版本:

$.when(img1Loaded,img2Loaded,img3Loaded).done(function () { ... etc

像這樣:

$.when(MyDynamicList).done(function () { ... etc

在更廣泛的上下文中,var MyDynamicList 可以用腳本填充,它保存來自宣布每個圖像加載完成的函數的響應。 也就是說,我需要引用許多這樣聲明的變量,如下所示:

var img1Loaded = $.Deferred();

然后在 'img.onload' 函數中引用為: img1Loaded.resolve();

我讓這一切都適用於單個圖像,但不適用於 2 個或更多...

類推:

var it=['#d1,#d2'];

$(it[0]).on( "click", function() {
    alert(this.id);
});

換句話說,如何為我的案例創建等效的“它”。 這是完全錯誤的: var MyDynamicList= img1Loaded,.... imgNLoaded;

我在這上面畫了一個空白...

也許您可以創建自己的“when”函數,使用 Promise 處理數組:

function myWhen(dynamicList) {        
    const promises = dynamicList.map(item => new Promise( function(resolve,reject) {
        $.when(item).done(data => resolve(data));
    } ) );

    return Promise.all(promises);
}

const MyDynamicList = [$.ajax( "foo" ) , $.ajax( "bar.aspx" ) ...];

myWhen(MyDynamicList).then( items => {
    //do stuff
} ).catch(err => {
    //handle error
})

myWhen 將在 dynamicList 中的所有“thenables”解決時完成。

您可以在此處閱讀有關承諾的更多信息: https : //developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise

希望這可以幫助

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM