作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我制作了一个小的滚动条 jQuery 插件。它有一个非常标准的实现:$(selector).drollScroll({options});
,并带有默认值。诀窍是,我希望用户能够提前设置这些默认值,以便对于较大的网站(我正在为更大的网站开发这个), future 的用户可以轻松获得相同的滚动条,而无需每次都指定参数.
我真的希望允许用户在不首先实例化 jQuery 对象的情况下执行此操作,因此可以通过 $.drollScrollDefaults({options})
.
到目前为止我有这个:
(精简为仅提供阅读乐趣的必需品)
(function($)
{
var defaults = {
content : ".drollScrollBowl",
scrollBoxClassName : "drollScrollShoal",
scrollbarClassName : "drollScrollPole",
thumbClassName : "drollScrollTrollThumb",
scrollbarOpacity : 1,
scrollbarFadeTime : 300,
scrollbarTimeToLive : 1000,
alwaysVisible : true,
autoFade : false,
overrideBoxStyling : false,
overrideBarStyling : false,
overrideThumbStyling : false,
scrollWidthConstant : false
};
$.drollScrollDefaults = function(options)
{
$.extend(defaults, options);
};
$.fn.drollScroll = function(options)
{
var opts;
return this.each(function()
{
// we want opts to be its own object in case someone edits it later
opts = $.extend({}, defaults, options);
$(this).data("drollScroll", {options : opts});
});
};
})(jQuery);
现在这确实有效,但是这条行
$.drollScrollDefaults = function(options)
说真的,这不可能是应该的方式。感觉被黑客入侵了;我觉得我一定做错了,就像我应该使用 $ 或其他东西的(对我来说完全神秘的)原型(prototype)。 是这个吗?我已经说对了吗?实现这一目标的最佳方法是什么?我应该这样做吗!?
最佳答案
我没有发现它有什么问题,它并不比分配全局函数更糟糕,例如我使用 window.number_format
(我构建了自己的工具包)。由于您希望用户能够调用 $.drollScrollDefaults
,因此您应该指定该值。
关于jQuery 插件 : Making a function on '$' ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17601910/
我是一名优秀的程序员,十分优秀!