使用Mootools 1.3.2
代码如下:
var DNReportAbuse = new Class({
Extends: DNUserDialog,
comment_id: null,
container: null,
initialize: function(classname)
{
var bindclass = $(document.body).getElements(classname);
bindclass.each(function(el) {
el.addEvents({
click: function() {
this.reportComment();
}.bind(this)
});
});
},
reportComment: function() {
this.preventDefault();
alert('hello');
return false;
}
});
事件确实绑定,当“this.reportComment();”被替换为“alert('hello world');”它完全有用......
...但是当使用“this.reportComment()”时,我会收到一个错误,Firebug解释为“函数this.reportComment()不是函数”。
我想我的问题与引用其适当范围之外的类函数有关,尽管我对为什么......或者如何解决问题感到有点困惑。最终目标是实现reportComment()函数的点击绑定到css类的所有成员(每页最多20个)。难点在于使用“this.reportComment()”引用reportComment()函数会导致错误声明该函数不存在,当它明显存在时。
在Stack Overflow上查看类似的问题似乎没有回答这个问题......所以希望有人能指出我正确的方向。
答案 0 :(得分:0)
bind
和events
存在一些问题:
initialize: function(classname)
{
var bindclass = $(document.body).getElements(classname);
var _self = this; //var to store the 'real' this you will use
bindclass.each(function(el) {
el.addEvents({
click: function(event) { //pass the event
this.reportComment(event);
}.bind(_self) //'this' is referring to the inner each function callback
});
});
},
reportComment: function(event) {
event.preventDefault(); //preventDefault on the event, not on 'this'
alert('hello');
return false;
}