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

jQuery handler not defined (handler.guid)

本文关键字:handler guid 未定义 处理 程序 jQuery      更新时间:2023-09-26

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

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

当你这样做的时候:

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");