我正在挖掘Twitter的Bootstrap,现在想尝试向插件添加一些功能,但我无法弄清楚如何实现。以模态插件为例(http://twitter.github.com/bootstrap/javascript.html#modals),我想添加一个新的函数到插件,可以调用标准插件方法。我认为我最接近的是以下代码,但是当我尝试访问时所获得的所有内容都是该函数不是对象的一部分。如何扩展Twitter引导程序插件
有什么建议吗?这是我曾尝试这似乎是最接近于什么,我需要做的:
$.extend($.fn.modal, {
showFooterMessage: function (message) {
alert("Hey");
}
});
然后,我会想将它命名为:
$(this).closest(".modal").modal("showFooterMessage");
编辑:好的,我想通了如何做到这一点:
(function ($) {
var extensionMethods = {
displayFooterMessage: function ($msg) {
var args = arguments[0]
var that = this;
// do stuff here
}
}
$.extend(true, $.fn.modal.Constructor.prototype, extensionMethods);
})(jQuery);
与现有的一组引导插件的问题是,如果有人想扩展他们,没有一个新的方法可以接受参数。我试图“解决”这个问题是在插件函数调用中添加参数的接受。
$.fn.modal = function (option) {
var args = arguments[1] || {};
return this.each(function() {
var $this = $(this)
, data = $this.data('modal')
, options = typeof option == 'object' && option
if (!data) $this.data('modal', (data = new Modal(this, options)))
if (typeof option == 'string') data[option](args)
else data.show()
}) // end each
} // end $.fn.modal
如果此编辑本来是一个答案,你现在应该可以将它张贴作为一个答案。请继续努力:) – BoltClock 2012-03-16 19:05:55
看起来有点跛脚回答我自己的问题;) – AlexGad 2012-04-04 18:59:21
哦,别担心。这是完全正常的 - 即使[我做过一次](http://stackoverflow.com/questions/5493149/how-do-i-make-a-wpf-window-movable-by-dragging-the-extended-玻璃框架):) – BoltClock 2012-04-04 19:04:06