So che non è perfetto, ma è possibile definire il proprio oggetto defaults
che contiene i valori predefiniti. Poi, se è necessario sostituire o aggiungere a quelle di default, è possibile utilizzare $.extend
:
var dialogDefaults = {
open: function (event, ui) {
$(".ui-dialog-titlebar").removeClass("ui-corner-all");
$(".ui-dialog").removeClass("ui-corner-all");
}
};
// then later on:
$("#foo").dialog($.extend({ }, dialogDefaults, {
autoOpen: false,
width: 500,
/* etc... */
}));
Ricordiamo inoltre che per gli eventi, è possibile associare a loro al di fuori delle opzioni oggetto utilizzando on
(o suoi fratelli delegate
, bind
e live
). È possibile applicare tale gestore di eventi a più finestre di dialogo, applicando la stessa classe a tutte le finestre di dialogo, ad esempio:
$("div.my-dialog-class").on("dialogopen", function (event, ui) {
$(".ui-dialog-titlebar").removeClass("ui-corner-all");
$(".ui-dialog").removeClass("ui-corner-all");
});
Basta tenere a mente che questo gestore di eventi non sparare per le nuove finestre di dialogo. Si potrebbe lasciare la bolla dell'evento il DOM al body
e allegare il gestore di eventi c'è (questo è l'itinerario vorrei andare):
$(document.body).on("dialogopen", "div.my-dialog-class", function (event, ui) {
$(".ui-dialog-titlebar").removeClass("ui-corner-all");
$(".ui-dialog").removeClass("ui-corner-all");
});
Con questo metodo di delega evento, si sta applicando la funzione open
a tutti finestre di dialogo che verranno mai aggiunte a document.body
.
fonte
2012-02-15 13:52:49
Cosa intendi con "imposta come predefinito"? Quello sarebbe modificare il CSS. Non vedo l'esigenza di utilizzare JavaScript ogni volta che si apre la finestra di dialogo quando è possibile modificare facilmente il CSS per rimuovere gli angoli arrotondati. – j08691
Potrebbe voler vedere questo per una risposta migliore: http://stackoverflow.com/questions/2287045/override-jqueryui-dialog-default-options – phazei