我无法访问Class和当前元素。如何才能访问当前元素和类?
// Class stuff above
fuction1 : function () {
myelements.addEvent('click', this.function2);
},
function2 : function () {
// "this" is the element from function1
this.getParent('div')
// now I need to call another function
// But since the scope is the element, I get an error
// If I bind function two,
// how can I gain access to the element?
this.function3();
}
//Class stuff below
谢谢!
答案 0 :(得分:1)
这是一种更清洁的方式。请注意,事件已传递给方法:
var Foo = new Class({
initialize: function() {
this.elements = $$('li').addEvent('click', this.click.bind(this));
},
click: function(e) {
console.log(this); // Foo Class
console.log(e.target); // the clicked this.elements item
}
});
一个有效的例子:http://jsfiddle.net/AtUgd/
答案 1 :(得分:0)
我通常做这样的事情:
FooBar = new Class({
initialize: function() {
this.element = $('foobar');
this.element.addEvent('click', function(e) { this.foo(e) }.bind(this));
},
foo: function(e) {
console.log( $(e.target) );
}
});
答案 2 :(得分:0)
请注意,e.target
并不总是您真正期望的元素(您绑定的元素)。
这是一个被点击的元素,所以如果你的binded元素包含一些内容,click事件将获得bubbled up并且它会触发,但你会在e.target
中有错误的元素
如果你想将事件绑定元素传递给你的一个类方法,你可以这样做:
var self = this; // 'this' is class reference
elements.addEvent('click', function(e){
self.myClassMethod(this, e); // now 'this' is clicked element
});
现在你已经将正确的元素传递给你的方法并准备好操作了。