我是一个相当新的jQuery用户,希望扩展一个现有的jQuery插件,它可以满足我75%的需求。我已经试着在这方面做功课了。我在stackoverflow上查看了以下问题:
我已经在read up方法上扩展了。然而,所有这些作业都让我感到困惑。我正在使用fullcalendar插件,需要修改一些行为以及添加新的事件挂钩。我是不是坚持在插件闭包本身做这件事?我是不是漏掉了什么明显的东西?
理想情况下,我们可以将我们的代码从插件代码中分离出来,以便进行可能的升级。任何帮助都是非常感谢的,特别是关于我在哪里缺少一些信息或意见的地方,关于其他堆栈溢出问题中已经提出的解决方案是否有意义。对我来说,它们相互矛盾,我仍然感到困惑。
发布于 2012-11-08 07:18:47
我也有同样的问题,然后来到这里,然后Jared Scott的回答启发了我。
(function($) {
var fullCalendarOrg = $.fn.fullCalendar;
$.fn.fullCalendar = function(options) {
if(typeof options === "object") {
options = $.extend(true, options, {
// locale
isRTL: false,
firstDay: 1,
// some more options
});
}
var args = Array.prototype.slice.call(arguments,0);
return fullCalendarOrg.apply(this, args);
}
})(jQuery);
发布于 2010-01-13 01:58:10
$.fn.APluginName=function(param1,param2)
{
return this.each(function()
{
//access element like
// var elm=$(this);
});
}
// sample plugin
$.fn.DoubleWidth=function()
{
return this.each(function()
{
var _doublWidth=$(this).width() * 2;
$(this).width(_doubleWidth);
});
}
//
<div style="width:200px" id='div!'>some text</div>
//使用自定义插件
$('#div1').DoubleWidth();
/上述写入类型的util通常适用于dom元素/自定义util
(function($){
var _someLocalVar;
$.Afunction=function(param1,param2) {
// do something
}
})(jquery);
//访问上面的util作为
$.Afunction();
//这种类型的工具通常扩展javascript
发布于 2010-01-13 02:16:41
我发现很多插件的方法都是受保护的/私有的(即在闭包作用域中)。如果你需要修改方法/函数的功能,那么除非你愿意分叉,否则你就不走运了。现在,如果您不需要更改这些方法/函数中的任何一个,那么可以使用$.extend($.fn.pluginName, {/*your methods/properties*/};
我之前做的另一件事是简单地使用插件作为我的插件的属性,而不是试图扩展它。
这一切真正归结为你想要扩展的插件是如何编码的。
https://stackoverflow.com/questions/2050985
复制相似问题