有jQuery的几个功能,你可以做到以下几点: $('#element').each().get('title').othercmd()
使用jQuery(或者甚至只是JavaScript)的,如何链命令一起
我怎样才能创建一个类(或一系列的类)来复制这种行为? 基本上,我想是这样的:
test = new Something()
test.generateSection('title').addData('somedata')
什么这是正确的?
谢谢
有jQuery的几个功能,你可以做到以下几点: $('#element').each().get('title').othercmd()
使用jQuery(或者甚至只是JavaScript)的,如何链命令一起
我怎样才能创建一个类(或一系列的类)来复制这种行为? 基本上,我想是这样的:
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插件。 这其实很简单,并且有大量的教程来编写自己的插件。
一个我遇到的最简单的就是这个教程: