La finestra di dialogo dell'interfaccia utente jQuery cambia il titolo dopo il callback del caricamento


111

Mi piace cambiare il titolo da una finestra di dialogo dell'interfaccia utente dopo aver inviato un modulo in questa finestra di dialogo dell'interfaccia utente. Quindi nella funzione di richiamata dopo loaddovrei suggerire, ma ho provato e cercato su Google senza risultato.

Qualcuno ha un'idea?

Risposte:


258

Utilizzo dei metodi di dialogo:

$('.selectorUsedToCreateTheDialog').dialog('option', 'title', 'My New title');

O direttamente, hacky però:

$("span.ui-dialog-title").text('My New Title'); 

Per riferimento futuro, puoi saltare google con jQuery. L'API jQuery risponderà alle tue domande la maggior parte del tempo. In questo caso, la pagina API di dialogo . Per la libreria principale: http://api.jquery.com


8
Fai attenzione che la versione "hacky" di cui sopra cambierà il titolo di TUTTE le finestre di dialogo nella pagina (nel caso tu ne abbia creato più di una).
camainc

1
posso passare più opzioni?
themhz

3
@themis nella versione attuale c'è un .option()metodo che accetta anche un oggetto, vedi options(options)qui: api.jqueryui.com/dialog/#method-option
Nick Craver

$ ("# dialog"). dialog ({autoOpen: false, show: {effect: "blind", duration: 1000}, hide: {effect: "explode", duration: 1000}, close: function () {; }, titolo: "test"}). dialog ("open");
WhiteWolfza

Dato che la mia risposta sta ancora ottenendo molta attenzione, la posterò anche qui .. stackoverflow.com/a/17745795/1315125
Igor L.

14

Ho trovato una soluzione più semplice:

$('#clickToCreate').live('click', function() {
     $('#yourDialogId')
         .dialog({
              title: "Set the title to Create"
         })
         .dialog('open'); 
});


$('#clickToEdit').live('click', function() {
     $('#yourDialogId')
         .dialog({
              title: "Set the title To Edit"
         })
         .dialog('open'); 
});

Spero che aiuti!


3

Un miglioramento dell'idea hacky di Nick Craver di inserire HTML personalizzato nel titolo di una finestra di dialogo jquery:

var newtitle= '<b>HTML TITLE</b>';
$(".selectorUsedToCreateTheDialog").parent().find("span.ui-dialog-title").html(newtitle);

Preferisco non essere hacker quando non è necessario, e c'è già un modo approvato da jquery per impostare i titoli HTML: sovrascrivere il metodo _title. E 'già coperto in questa risposta SO: stackoverflow.com/questions/14488774/...
cincodenada

2

Ho provato a implementare il risultato di Nick che è:

$('.selectorUsedToCreateTheDialog').dialog('option', 'title', 'My New title');

Ma questo non ha funzionato per me perché avevo più finestre di dialogo su 1 pagina. In una situazione del genere, il titolo verrà impostato correttamente solo la prima volta. Il tentativo di pinzare i comandi non ha funzionato:

    $("#modal_popup").html(data);
    $("#modal_popup").dialog('option', 'title', 'My New Title');
    $("#modal_popup").dialog({ width: 950, height: 550);

Ho risolto questo problema aggiungendo il titolo agli argomenti della funzione javascript di ciascuna finestra di dialogo nella pagina:

function show_popup1() {
    $("#modal_popup").html(data);
    $("#modal_popup").dialog({ width: 950, height: 550, title: 'Popup Title of my First Dialog'});
}

function show_popup2() {
    $("#modal_popup").html(data);
    $("#modal_popup").dialog({ width: 950, height: 550, title: 'Popup Title of my Other Dialog'});
}

0

Anche meglio!

    jQuery( "#dialog" ).attr('title', 'Error');
    jQuery( "#dialog" ).text('You forgot to enter your first name');

La prima riga non cambierà il titolo della finestra di dialogo. Non esiste un tale attributo nella finestra di dialogo dell'interfaccia utente di jQuery. Il secondo cambierà il contenuto della finestra di dialogo stessa, ma non è quello che stava chiedendo l'utente. E questo supponiamo che il iddialogo di yoru lo sia #dialog.
Pere
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.