Как расширить плагин Twitter Bootstrap
Я копаюсь в Bootstrap в Твиттере и теперь хочу попробовать добавить некоторые функциональные возможности в плагины, но я не могу понять, как это сделать. Используя модальный плагин в качестве примера (http://twitter.github.com/bootstrap/javascript.html#modals), Я хотел бы добавить новую функцию в плагин, которая может быть вызвана так же, как стандартные методы плагина. Самое близкое, я думаю, я пришел со следующим кодом, но все, что я получаю, когда пытаюсь получить доступ, это то, что функция не является частью объекта.
Какие-либо предложения? Это то, что я попробовал, это, кажется, ближе всего к тому, что мне нужно сделать:
$.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);
Проблема с существующим набором плагинов Bootstrap заключается в том, что если кто-то хочет расширить их, ни один из новых методов не может принимать аргументы. Моя попытка «исправить» это состояла в том, чтобы добавить принятие аргументов в вызове функции плагинов.
$.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