将变量列表动态包含到 Jquery 函数中作为参数
Dynamic include of a list of variables into a Jquery function as parameters
如果事先不知道变量的名称和数量,如何将变量列表动态注入函数。特别是:
我正在尝试替换此 "hardcoded" 版本:
$.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);
});
换句话说,如何为我的案例创建 'it' 的等价物。这是完全错误的:var MyDynamicList= img1Loaded,.... imgNLoaded;
我对这个完全空白...
也许您可以创建自己的 "when" 函数来使用 promises 处理数组:
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
希望对您有所帮助
如果事先不知道变量的名称和数量,如何将变量列表动态注入函数。特别是:
我正在尝试替换此 "hardcoded" 版本:
$.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);
});
换句话说,如何为我的案例创建 'it' 的等价物。这是完全错误的:var MyDynamicList= img1Loaded,.... imgNLoaded;
我对这个完全空白...
也许您可以创建自己的 "when" 函数来使用 promises 处理数组:
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
希望对您有所帮助