Jquery事件不适用于对象?

时间:2011-06-24 01:15:52

标签: javascript jquery oop javascript-events

我正在尝试这样做:

var foo = new Foo();
foo.setEvents( foo );

foo代码:

function Foo()
{
   this.id = getId(); //this works successfully, each instance of foo gets
                          //assigned a new auto incrementing id e.g 1, 2, 3, etc

   this.setEvents = function( that ) 
   {
      $("#myButton").click( that.bar );
   }

   this.bar = function()
   {
      alert(this.id);
   }
}

每当我运行此代码并单击我的按钮时,我会收到一条警告“未定义”

如何在触发事件时保留我想要运行其方法的对象的状态?

2 个答案:

答案 0 :(得分:1)

这指的是jQuerys范围内不同的东西......

function Foo()
{
   obj=this;
   this.id = 1; //this works successfully, each instance of foo gets
                          //assigned a new auto incrementing id e.g 1, 2, 3, etc

   this.setEvents = function( that ) 
   {
      $("#myButton").click( that.bar );
   }

   this.bar = function()
   {
      console.log(obj)
   }
}
var foo = new Foo();
foo.setEvents( foo );

答案 1 :(得分:1)

调用该函数时,this指向处理该事件的本机DOM元素。

您需要对该对象本身的引用,该引用可以在该函数的范围内解析。

执行此操作的常用方法是使用var that = this

jsFiddle