我正在尝试按顺序执行多个方法:
var objMethods = [JqueryAjaxViaPageMethod, JqueryWebServiceZeroParams, JqueryWebServiceOneParam, JqueryWebServiceTwoParams, JqueryWebServiceObjectParam, JqueryWebServiceClassArray];
$.each(objMethods, executeMethod(this));
function executeMethod(methodname) {
methodname();
alert("done");
}
然而,这不起作用
奇怪的是,这样做:
executeMethod(JqueryAjaxViaPageMethod);
如何执行方法的“数组”?
答案 0 :(得分:0)
取决于声明它们的范围(上下文)
function executeMethod(methodname,context) {
context = context || window;
context[methodname]();
alert("done");
}
$.each(objMethods, function(){
executeMethod(this);
});
答案 1 :(得分:0)
如果方法是这样声明的
function JqueryAjaxViaPageMethod () {
...
}
然后你可以简单地调用这个方法
function executeMethod(methodname) {
window[methodname]();
alert("done");
}
如果方法被声明为对象的一部分
var objMethods = {
JqueryAjaxViaPageMethod : function () { ... },
...
};
然后你会这样称呼它
function executeMethod(methodname) {
objMethods[methodname]();
alert("done");
}
答案 2 :(得分:0)
在$.each(objMethods, executeMethod(this))
中,this
最有可能是window
。您正在做的是调用executeMethod
并将返回值作为回调传递给$.each
。
我想你想要:
$.each(objMethods, function(index, method) {
executeMethod(method); // of course you could just do `method()` here as well
});
答案 3 :(得分:0)
我猜你的每种方法都错了。它应该是
$.each(objMethods, function(i,l) {
executeMethod(l);
});
其中i =元素的索引 l =索引i的元素