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

Using Jquery (or even just Javascript), how to chain commands together

本文关键字:了解 命令 在一起 链接 Jquery Javascript 使用      更新时间:2023-09-26

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

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

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

什么是正确的?

感谢

一种方法是在每个函数中返回"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>

只需在每个方法结束时返回您正在操作的东西。(通常为this)。

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

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),这样您才能继续从其他方法操作它。

我不知道是否有一种方法可以用简单的javascript轻松地将命令链接在一起,但如果你想在jQuery中尝试这一点,你必须将代码编写为jQuery插件。这其实很容易,而且有很多教程可以用来编写自己的插件。

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

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