使用Jquery(甚至只是Javascript),如何将命令链接在一起

时间:2011-05-29 07:15:51

标签: javascript jquery chaining

jquery中有几个函数可以执行以下操作: $('#element').each().get('title').othercmd()

如何创建一个类(或一系列类)来复制此行为? 基本上,我想要这样的事情:

test = new Something()
test.generateSection('title').addData('somedata')

这是正确的吗?

由于

4 个答案:

答案 0 :(得分:3)

只需在每种方法结束时返回您正在操作的内容。 (通常this

答案 1 :(得分:3)

一种方法是在每个函数中返回“this”(对象)。所以你可以这样做:

<script>
var Something = function() {
  this.hi = function() {
    alert('hi');
    return this;
  };
  this.bye = function() {
    alert('bye');
    return this;
  };
}
var myObj = new Something();
myObj.hi().bye();
</script>

答案 2 :(得分:1)

只需在您希望能够链接的所有方法中返回当前实例,就可以实现链模式。

Something.prototype.generateSection = function(title){
    ... code ...
    this.sectionAdded = ...;
    return this;
}
Something.prototype.addData = function(data)
{
  ... continue manipulating this.sectionAdded however you need it ..
  return this;
}

对你的“班级”的其他方法做同样的事情。要记住的一点是,你必须存储将来调用所需的对象,在你生成一个部分的情况下,所以你必须将它放在你的实例中(在某些私有变量中,如sectionAdded)所以你将能够继续从其他方法操纵它。

答案 3 :(得分:0)

我不知道是否有一种方法可以轻松地将命令与普通的javascript链接在一起,但是如果你想用jQuery尝试这个,你必须将你的代码编写为jQuery插件。 它实际上非常简单,并且有大量的教程可以编写自己的插件。

我遇到的最简单的一个是本教程:

building-your-first-jquery-plugin-that.html