扩展现有的jQuery插件

时间:2011-03-22 14:35:48

标签: jquery plugins jquery-plugins

我有一个现有的jQuery插件,现在我想扩展它。考虑下面提到的插件:

$.fn.x = function(option) {
        var defaults = {
            a: 1,
            b: 2
        };

        option = $.extend(def, option);
        function abc() {
            //do something
        }
        function def() {
            //do something
        }
    };

现在上面的一个是我从某处获得的插件。我需要为abc方法设置自定义行为,比如说

function abc() {
                //do something else
            }

我不想更改现有的插件,你能告诉我如何通过扩展相同的插图或制作我自己的自定义插件来实现相同的目标吗?

2 个答案:

答案 0 :(得分:1)

在这种特定情况下,您将无法替换/覆盖该方法,因为它被声明为局部变量。最好的解决方案是编写自己的插件,或者使用abc函数的选项扩展这个插件。 像这样:

function abc() {
    if(!!option.abc){
         return option.abc.call(this);    
    }
    alert('old abc');
}

答案 1 :(得分:0)

认为您正在寻找的是jQuery extend

newFunctionality = {
    abc: function (){
        alert('yo');
    }
}

$.extend($.fn.x, newFunctionality);
$.fn.x.abc() #=> 'yo'