Я копаю в Twitter Bootstrap и теперь хочу попробовать добавить некоторые функции в плагины, но я не могу понять, как это сделать. Используя modal plugin в качестве примера (http://twitter.github.com/bootstrap/javascript.html#modals), я хотел бы добавить новую функцию в плагин, который можно вызвать, как и стандартные методы плагина, Ближайший я думаю, что я пришел со следующим кодом, но все, что я получаю, когда пытаюсь получить доступ, состоит в том, что функция не является частью объекта.
Любые предложения? Это то, что я пробовал, который, кажется, ближе всего к тому, что мне нужно сделать:
$.extend($.fn.modal, {
showFooterMessage: function (message) {
alert("Hey");
}
});
Тогда я хотел бы назвать это следующим образом:
$(this).closest(".modal").modal("showFooterMessage");
EDIT: Хорошо, я понял, как это сделать:
(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