扩展jQuery插件

时间:2009-04-16 18:43:25

标签: jquery

有没有人扩展现有的jQuery插件?

我不确定从哪里开始。我宁愿不实际复制和修改我希望扩展的插件。 我是通过原型或只是对插件的延伸调用来做到这一点吗?

或者我是否梦想这样做会有意义?

2 个答案:

答案 0 :(得分:10)

编辑:正如Seb所指出的,这并不是一个“扩展”插件的例子,更多的是“封装”一个插件,所以请按照它来实现:)

这是我为了简化我前一段时间jquery autocomplete plugin的使用而做的事情:

// small autocomplete plugin wrapping the full autocomplete plugin for a standard look and feel
(function($) {
    $.fn.standardAutocomplete = function(type) {
        return this.autocomplete(ToAbsoluteUrl("~/System/Autocomplete/" + type), {
            formatItem: formatItem,
            formatResult: formatResult
        });
        // Autocomplete formatting callbacks
        function formatItem(row) { return row[0] + "<span class=\"sub\">" + row[1] + "</span>"; }
        function formatResult(row) { return row[0].replace(/(<.+?>)/gi, ''); }
    }
})(jQuery);

现在不遵循“书本”jquery编码实践 - 例如我没有考虑到可以选择多个元素的事实,但在这种情况下,我知道我永远不会在页面上选择多个元素,所以我想保持简单,它“适用于我”。您可能可以使用类似的方法,也许更复杂一点。

答案 1 :(得分:2)

如果插件做得好,那么除了使用options更改其行为之外,您没有其他选择。

这样做的目的是封装所有代码并且不会干扰其他代码,因此您不能在其中注入任何代码。

如果你真的需要改变它的行为,那么我想你需要复制&amp;粘贴代码。