MooTools Chaining

时间:2010-02-05 05:06:10

标签: javascript mootools method-chaining

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

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

代码的作用是找到一个<input>,它是id属性值为buttonContainer的元素的子元素,并为其{{1}添加两个空格字符属性。上面的代码错误,但我不得不写:

value

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

2 个答案:

答案 0 :(得分:3)

对于每个调用的方法,MooTools都无法动态重新绑定this。这是不可能的。

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

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

this只能在范围发生变化时更改(在JavaScript中总是在您点击括号{}的函数时更改)。这不是MooTools链接的限制。这就是JavaScript的一般工作方式。

答案 1 :(得分:1)

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

$('buttonContainer').getElement('input').value += '  ';