覆盖jQuery插件函数,如jQuery UI中的函数
我知道这个问题已经问了好几次了,但答案似乎并不完全是我想要的。假设我有一个名为jdropdown的插件,它看起来像:覆盖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); 现在,在声明插件
(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没问题^ ^ ^ ^很乐意帮忙为插件创建默认值的好方法等等