Próbuję wykonać kilka metod w kolejności:
var objMethods = [JqueryAjaxViaPageMethod, JqueryWebServiceZeroParams, JqueryWebServiceOneParam, JqueryWebServiceTwoParams, JqueryWebServiceObjectParam, JqueryWebServiceClassArray];
$.each(objMethods, executeMethod(this));
function executeMethod(methodname) {
methodname();
alert("done");
}
to jednak nie działa
wyjątkowo to robi:
executeMethod(JqueryAjaxViaPageMethod);
Jak wykonać „tablicę” metod?
Odpowiedzi:
0 dla odpowiedzi № 1W $.each(objMethods, executeMethod(this))
, this
najprawdopodobniej odnosi się do window
. To, co robisz, dzwoni executeMethod
i mijając zwracana wartość jako oddzwonienie do $.each
.
Myślę, że chcesz:
$.each(objMethods, function(index, method) {
executeMethod(method); // of course you could just do `method()` here as well
});
0 dla odpowiedzi nr 2
Zależy od tego, który zakres (kontekst) jest zadeklarowany
function executeMethod(methodname,context) {
context = context || window;
context[methodname]();
alert("done");
}
$.each(objMethods, function(){
executeMethod(this);
});
0 dla odpowiedzi № 3
chyba każda metoda jest błędna. powinno być
$.each(objMethods, function(i,l) {
executeMethod(l);
});
gdzie i = indeks elementu l = element indeksu i
0 dla odpowiedzi nr 4
jeśli metody zostały zadeklarowane w ten sposób
function JqueryAjaxViaPageMethod () {
...
}
Następnie możesz po prostu wywołać taką metodę
function executeMethod(methodname) {
window[methodname]();
alert("done");
}
Jeśli metody zostały zadeklarowane jako część obiektu
var objMethods = {
JqueryAjaxViaPageMethod : function () { ... },
...
};
Wtedy nazwałbyś to tak
function executeMethod(methodname) {
objMethods[methodname]();
alert("done");
}