如何使用jquery执行或调用方法?

时间:2011-09-21 14:49:10

标签: jquery

我正在尝试按顺序执行多个方法:

var objMethods = [JqueryAjaxViaPageMethod, JqueryWebServiceZeroParams, JqueryWebServiceOneParam, JqueryWebServiceTwoParams, JqueryWebServiceObjectParam, JqueryWebServiceClassArray];

$.each(objMethods, executeMethod(this));

  function executeMethod(methodname) {
                methodname();
                alert("done");
            }

然而,这不起作用

奇怪的是,这样做:

executeMethod(JqueryAjaxViaPageMethod);

如何执行方法的“数组”?

4 个答案:

答案 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的元素