0

我有一个用于将处理程序附加到事件的函数,并且当传递给它一个匿名函数时它正在工作,但是当我将该函数声明为对象中的一个字段时它不起作用并且处理程序未定义

validationObj  = (function(API){

    this.validate = function (id2, idN2){
         //code


        //doesn't work 
        //this way i get an handler.guid error  on  functionFromMyApi 
        API.attach_events( {"keyup": run_func(id1, id2) },"id");


        // work's ok
        API.attach_events( {"keyup": function(){ 
                                       // same code here from run_func
                                     }
                            },"id");

          //code
    };


    var run_func = function (id1, id2){

         var obj1 = document.getElementById(id1);
         var obj2= document.getElementById(id2);

         var show_err = false;


         API.functionFromMyApi ();



         //code 
         // more code

     };


})(api);

我使用 jQuery 1.2.6

4

1 回答 1

1

当你这样做时:

API.attach_events( {"keyup": run_func(id1, id2) },"id");

您没有向它传递函数引用,就像您使用匿名函数时所做的那样,而是调用run_func并传递它的返回值。如果run_func没有参数,那么你可以这样做:

API.attach_events( {"keyup": run_func},"id");

但是,既然这样做了,您仍然需要使用匿名函数:

API.attach_events( {"keyup": function() {run_func(id1, id2)} },"id");
于 2013-04-24T09:15:27.173 回答