1

我认为函数/方法不应该返回 void,而是应该返回this. 这就是为什么我惊讶地发现这不起作用:

$('buttonContainer').getElement('input').set('value', this.get('value') + '  ');

代码要做的是找到一个<input>是元素的子元素,其id属性值为buttonContainer,并在其属性中添加两个空格字符value。但是,上述代码错误,我不得不写:

var input = $('buttonContainer').getElement('input');
input.set('value', input.get('value') + '  ');

MooTools 没有办法将这两个单独的语句链接成一个吗?类似于我的第一个片段?

4

2 回答 2

3

MooTools 不能this为每个调用的方法即时重新绑定。这是不可能的。

您必须了解对您的链的每一次调用都在同一范围内,因此this保持不变。jQuery 和其他所有框架都有同样的问题。如果您想同时对一个元素执行两个操作,则必须将对象存储在一个变量中,然后使用该变量来引用该对象,就像您在第二个示例中所做的那样:

var input = $('buttonContainer').getElement('input');
input.set('value', input.get('value') + '  ');

this只能在范围改变时改变(在 JavaScript 中总是当你点击一个{}包含函数的大括号时)。这不是 MooTools 链接的限制。这是 JavaScript 通常的工作方式。

于 2010-02-05T05:14:14.073 回答
1

您所要求的与链接无关。this没有上下文,所以你的电话失败了。您不满意的解决方案是您需要为其他值/属性编写它的方式,但是对于像这样的直接更改,请这样编写:

$('buttonContainer').getElement('input').value += '  ';
于 2010-02-05T05:13:07.463 回答