Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jquery-ui/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
覆盖jQuery插件函数,如jQuery UI中的函数_Jquery_Jquery Ui_Jquery Plugins - Fatal编程技术网

覆盖jQuery插件函数,如jQuery UI中的函数

覆盖jQuery插件函数,如jQuery UI中的函数,jquery,jquery-ui,jquery-plugins,Jquery,Jquery Ui,Jquery Plugins,我知道这个问题已经问了好几次了,但答案似乎并不完全是我想要的。假设我有一个名为jdropdown的插件,它看起来像: (function($){ var options = {}, methods = {}, renderItem = function(){}, $.fn.jdropdown = function(method){ // plugin method despatcher }); })(jQuery); 现在,在声明插件

我知道这个问题已经问了好几次了,但答案似乎并不完全是我想要的。假设我有一个名为jdropdown的插件,它看起来像:

(function($){
    var options = {},
    methods = {},
    renderItem = function(){},

    $.fn.jdropdown = function(method){
        // plugin method despatcher
    });
 })(jQuery);
现在,在声明插件时,我希望允许用户覆盖插件中的renderItem函数。我注意到jQueryUI通过允许通过数据属性访问条目来解决这个问题,就像在本例中看到的那样:但是每当我尝试自己做这样的事情时,我就走到了死胡同。我读过的数据部分:没有用,他们没有真正描述东西是如何工作的,他们只是写了很多“FTW”,并说明它为什么有用

有没有人可以告诉我如何使用我的element plugin anchor的data属性访问插件方法以覆盖它们,如下所示:

$('.someThing').jdropdown().data('jdropdown').renderItem = function(){}
谢谢,

将其作为选项传递

(function($){
    var options = {
       renderItem: function(){}
    };

    $.fn.jdropdown = function(method){
        $.extend(options, method);
        // plugin method despatcher
    };
 })(jQuery);
然后使用它:

$('.someThing').jdropdown({
    renderItem: function(){
        //something....
    }
});
简单示例:

将其作为选项传递

(function($){
    var options = {
       renderItem: function(){}
    };

    $.fn.jdropdown = function(method){
        $.extend(options, method);
        // plugin method despatcher
    };
 })(jQuery);
然后使用它:

$('.someThing').jdropdown({
    renderItem: function(){
        //something....
    }
});
简单的例子:

创建一个闭包并保存原始插件以供将来重用; 重新创建同名插件; 做你想做的一切,并称之为原始插件

(function(){
    var originalPlugin = $.fn.pluginname;

    $.fn.pluginname = function(options) {

        var defaults = {
            someOption: 'string',
            anotherOption: { /* some object, if you need it ... */ }
        }

        var options = $.extend(defaults, options);
        var $this = $(this);
        $this.css('background-color', 'red'); // for example

        /* do something with '$this' applying any jquery */

        originalPlugin.apply(this, arguments);
    }
})();
创建一个闭包并保存原始插件以供将来重用; 重新创建同名插件; 做你想做的一切,并称之为原始插件

(function(){
    var originalPlugin = $.fn.pluginname;

    $.fn.pluginname = function(options) {

        var defaults = {
            someOption: 'string',
            anotherOption: { /* some object, if you need it ... */ }
        }

        var options = $.extend(defaults, options);
        var $this = $(this);
        $this.css('background-color', 'red'); // for example

        /* do something with '$this' applying any jquery */

        originalPlugin.apply(this, arguments);
    }
})();

哦,是的,这看起来是个更好的选择。我想试试,但把问题留长一点,看看是否有其他答案,谢谢:@Sammaye我也拉了把小提琴^ ^看看thereYea这是一个很棒的方法,效果很好,决定继续。再次感谢:@Sammaye没问题^ ^很乐意帮忙哦,是的,这看起来是一个更好的选择。我想试试,但把问题留长一点,看看是否有其他答案,谢谢:@Sammaye我也拉了把小提琴^ ^ ^ ^ ^看,是的,这是一个很棒的方法,工作得很完美,决定继续。再次感谢:@Sammaye没问题^ ^ ^ ^很乐意帮忙为插件创建默认值的好方法等等