未定义jQuery处理程序(handler.guid)

时间:2013-04-24 09:09:35

标签: javascript jquery api handler

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

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

1 个答案:

答案 0 :(得分: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");