以下代码中的'this'是否仍然不能引用MooTools选择器选择的DOM对象?
$$('div').addEvent('click', function()
{
var click1 = function(){$(this).setStyle('background', 'red');}
click1();
});
答案 0 :(得分:2)
你应该采用MooTools方式 - 将this
绑定到click1
函数 - http://jsfiddle.net/oskar/7EArh/5/
$$('div').addEvent('click', function() {
var click1 = function() {
this.setStyle('background', 'red');
}.bind(this);
click1();
});
此外,this
已经使用MooTools方法进行了扩展,因此无需执行$(this)
。
答案 1 :(得分:2)
处理它的最简洁方法是:
var click1 = function() {
this.setStyle('background', 'red');
};
$$('div').addEvent('click', click1);
在上面,'this'get被传递给名为。
的函数答案 2 :(得分:0)
没有。 click1()
与任何对象都没有关联(例如,obj.click1()
不可调用),因此this
指的是窗口。
但是,你可以这样做:
click1.call(this);
call
方法基本上将this
设置为其第一个参数。
答案 3 :(得分:0)
答案 4 :(得分:0)
在这种疯狂的情况下,我只是这样做:
$$('blah')。addEvent('click',function(){ var self = this;
var click1 = function(){ self.setStyle(....); }
click1();
});
......当然。我的代码中没有一个会包含click1();在末尾。像click1这样的内部函数通常用于其他目的。例如。
var click1 = function(){self.addClass('blah2')。removeClass('blah'); } self.set('tween',{onComplete:click1})。fade('in');