首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MooTools链接

MooTools链接
EN

Stack Overflow用户
提问于 2010-02-05 13:06:10
回答 2查看 281关注 0票数 1

我不认为一个函数/方法应该返回this --相反,它应该返回void。这就是为什么我惊讶地发现这不起作用:

代码语言:javascript
复制
$('buttonContainer').getElement('input').set('value', this.get('value') + '  ');

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

代码语言:javascript
复制
var input = $('buttonContainer').getElement('input');
input.set('value', input.get('value') + '  ');

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

EN

回答 2

Stack Overflow用户

发布于 2010-02-05 13:14:14

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

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

代码语言:javascript
复制
var input = $('buttonContainer').getElement('input');
input.set('value', input.get('value') + '  ');

只有当作用域发生变化时,this才会发生变化(在JavaScript中,只有当你遇到包含函数的大括号{}时,才会发生变化)。这不是MooTools链接的限制。这是JavaScript通常的工作方式。

票数 3
EN

Stack Overflow用户

发布于 2010-02-05 13:13:07

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

代码语言:javascript
复制
$('buttonContainer').getElement('input').value += '  ';
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2205174

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档