我不认为一个函数/方法应该返回this --相反,它应该返回void。这就是为什么我惊讶地发现这不起作用:
$('buttonContainer').getElement('input').set('value', this.get('value') + ' ');代码要做的是找到一个<input>,它是id属性值为buttonContainer的元素的子元素,并在其value属性中添加两个空格字符。但是上面的代码有错误,我不得不写:
var input = $('buttonContainer').getElement('input');
input.set('value', input.get('value') + ' ');难道MooTools没有办法将这两个独立的语句链接成一个语句吗?类似于我的第一个代码片段?
发布于 2010-02-05 13:14:14
MooTools不能为调用的每个方法动态地重新绑定this。这是不可能的。
您必须了解对链的每个调用都在相同的作用域中,因此this保持不变。jQuery和其他所有框架都有同样的问题。如果要同时对一个元素执行两个操作,则必须将该对象存储在一个变量中,然后使用该变量引用该对象,就像您在第二个示例中所做的那样:
var input = $('buttonContainer').getElement('input');
input.set('value', input.get('value') + ' ');只有当作用域发生变化时,this才会发生变化(在JavaScript中,只有当你遇到包含函数的大括号{}时,才会发生变化)。这不是MooTools链接的限制。这是JavaScript通常的工作方式。
发布于 2010-02-05 13:13:07
您所要求的与链接无关。this没有上下文,因此您的调用失败。您不满意的解决方案是您将需要为其他值/属性编写它的方式,但是对于像这样的直接更改,可以这样编写:
$('buttonContainer').getElement('input').value += ' ';https://stackoverflow.com/questions/2205174
复制相似问题