2013-04-24 61 views
0

我有一个函数用于附加处理程序到事件,它的工作时传递一个匿名函数,但当我声明函数作为一个领域的对象,它不工作和处理程序是未定义未定义jQuery处理程序(handler.guid)

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

当你这样做:

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

是什么奇怪的是,我进入调试器在run_func中,它运行正常,当我回到API.attach_events({“keyup”:run_func(id1,id2)},“id”);我得到错误。 我希望在输入run_func时得到错误。 – 2013-04-24 09:20:23

+0

我运行它没有参数只是为了看到结果,它工作正常 – 2013-04-24 09:53:57

相关问题