理解javascript中的方法链接

时间:2014-02-02 17:07:27

标签: javascript jquery function chaining

我希望方法链工作,但似乎我没有得到一些概念。

此:

$(".list").activeJS()

首先必须使用jQuery来获取HTMLElement节点列表,然后它必须调用传递节点列表的activeJS()函数。

var activeJS = function(item){

    alert(item) //nodelist


}

现在我得到一个TypeError:$(...)。activeJS在我的控制台中不是函数错误。

THX,

3 个答案:

答案 0 :(得分:1)

如果要创建一个可从jQuery对象调用的函数,则必须将其添加到jQuery原型对象中:

jQuery.fn.activeJS = function(item) {
  // ... whatever
};

答案 1 :(得分:1)

当一个函数添加到jQuery(允许链接)时,它被称为插件,必须考虑几个方面。例如,您的功能本身是否可链接?您的函数是在单个元素还是多个元素上工作?我建议您研究jQuery插件并在jQuery中将您的函数构建为插件。

这是一个关于构建jQuery插件的excellent tutorial,它涵盖了链接,传递属性和调用不同插件函数等概念。看一下这篇文章,确定你的函数是否真的需要成为一个插件。

jQuery和所选元素作为参数传递给函数而不是链接可能更好。

答案 2 :(得分:1)

看一下这个例子:

var obj = {
    fn: function(){
        console.log("fn method");
        return this;
    },
    abc: function(){
        console.log("abc method");
        return this;
    },
    oneMore: function(){
        console.log("one more method");
        return this;
    }
};

此处通过返回对 obj 对象的引用来提供链接。 简单地说,每次在该对象上调用方法时,都会返回该对象 - 您可以继续调用其方法。这是你可以在jQuery中找到的基本链接模式 - 稍加修改但想法是一样的。由于javascript的动态特性,我们可以做这种事情。链接允许耦合由公共对象连接的相关方法。这种模式源于函数式编程,javascript受功能语言(主要是方案)的影响很大。 但是太多的链接会导致代码难以理解,就像许多jQuery示例中所见。