2010-10-29 110 views

回答

1

有没有必要在这里传递一个指标,由于this将引用您要在click事件处理程序中单击的元素,因此您可以这样做:

var MyObject = { 
    init: function() { 
     this.items = $('#menu a'); 
     this.items.bind('click', this.doSomething); 
    },  
    doSomething: function() { 
     alert(this.innerHTML); 
    } 
}; 

You can test it out here

+0

是的,但我需要“this”将成为MyObject,而不是触发事件的元素“a”。 – Luistar15 2010-10-29 01:39:21

+0

@ Luistar15 - 在事件处理程序中情况并非如此,this指的是元素,如果您希望它指向元素,最好创建一个像您所指向的“self”的变量,或更改上下文的处理程序......但只有一个变量的副本,只要执行'MyObject'来引用它,除非我失去了一些东西? – 2010-10-29 01:41:23

+0

我明白了,是的,它只有一个副本。所以,我不能做这样的事情(http://jsfiddle.net/mUjAj/2/)? jquery版本将是(http://jsfiddle.net/mUjAj/3/)。那么,我不能用“this”来指代“MyObject”吗?或者有什么办法? – Luistar15 2010-10-29 02:53:45

0

试试这个,看看它是否工作:

var MyObject = { 
    init: function() { 
     this.items = $('#menu a'); 

     for (var i = 0; i < this.items.length; i++) { 
      $(this.items[i]).bind('click', {index:i}, this.doSomething); 
     } 
    }, 

    doSomething: function (e) { 
     alert(e.data.index); 

    } 
}; 
+0

是的,它的工作,只是一点点修复:doSomething:function(e)...,谢谢 – Luistar15 2010-10-29 01:32:15

+0

我还不能投票,但再次感谢。 – Luistar15 2010-10-29 01:35:26

+0

奥普斯,我需要“这个”将是MyObject,而不是引发事件的元素“a”。 – Luistar15 2010-10-29 01:38:55

相关问题