2011-05-29 21 views
2

有jQuery的几个功能,你可以做到以下几点: $('#element').each().get('title').othercmd()使用jQuery(或者甚至只是JavaScript)的,如何链命令一起

我怎样才能创建一个类(或一系列的类)来复制这种行为? 基本上,我想是这样的:

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

什么这是正确的?

谢谢

回答

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> 
3

只是返回你在每个方法的末尾操作的东西。 (通常为this)。

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之类的一些私有变量中),以便您能够继续从其他方法操纵它。

0

我不知道是否有一种方法可以轻松地将命令与纯JavaScript结合在一起,但是如果您想用jQuery尝试这一点,则必须将您的代码编写为jQuery插件。 这其实很简单,并且有大量的教程来编写自己的插件。

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

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

相关问题