Je suis à creuser de Twitter Bootstrap et maintenant vous voulez essayer d'ajouter certaines fonctionnalités des plugins, mais je ne peux pas comprendre comment le faire. À l'aide de la lightbox plugin comme exemple (http://twitter.github.com/bootstrap/javascript.html#modals), j'aimerais ajouter une nouvelle fonction pour le plugin qui peut être appelé comme l'un serait le niveau plugin méthodes. Le plus proche que je pense que je suis venu, c'est avec le code suivant, mais tout ce que j'obtiens quand j'essaie d'accéder à la fonction ne fait pas partie de l'objet.
Toutes les suggestions? C'est ce que j'ai essayé qui semble être la plus proche de ce que je dois faire:
$.extend($.fn.modal, {
showFooterMessage: function (message) {
alert("Hey");
}
});
Ensuite, je voudrais l'appeler comme suit:
$(this).closest(".modal").modal("showFooterMessage");
EDIT: OK, j'ai compris comment faire:
(function ($) {
var extensionMethods = {
displayFooterMessage: function ($msg) {
var args = arguments[0]
var that = this;
// do stuff here
}
}
$.extend(true, $.fn.modal.Constructor.prototype, extensionMethods);
})(jQuery);
Le problème avec l'ensemble existant de Bootstrap plugins est que si quelqu'un veut s'étendre, aucun de ces nouvelles méthodes peuvent accepter des arguments. Ma tentative de "réparer" ce fut pour ajouter l'acceptation des arguments dans les plugins appel de fonction.
$.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