Diálogo jQuery ui muda o título após o retorno de carga

111

Eu gosto de mudar o título de uma janela de diálogo de IU depois de enviar um formulário nesta janela de IU. Então, na função de retorno de chamada após loadeu deveria sugerir, mas eu tentei e pesquisei sem resultado.

Alguém tem uma ideia?

Guido Lemmens 2
fonte

Respostas:

258

Usando métodos de diálogo:

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

Ou diretamente, embora hacky:

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

Para referência futura, você pode ignorar o google com jQuery. A API jQuery responderá às suas perguntas na maioria das vezes. Nesse caso, a página Dialog API . Para a biblioteca principal: http://api.jquery.com

Nick Craver
fonte
8
Esteja ciente de que a versão "hacky" acima mudará o título de TODOS os diálogos na página (caso você tenha criado mais de um).
camainc 02 de
1
posso passar várias opções?
themhz
3
@themis na versão atual existe um .option()método que pega um objeto também, veja options(options)aqui: api.jqueryui.com/dialog/#method-option
Nick Craver
$ ("# diálogo"). dialog ({autoOpen: false, show: {efeito: "cego", duração: 1000}, ocultar: {efeito: "explodir", duração: 1000}, fechar: função () {; }, título: "teste"}). dialog ("abrir");
WhiteWolfza
Como minha resposta ainda está recebendo muita atenção, também irei postá-la aqui .. stackoverflow.com/a/17745795/1315125
Igor L.
14

Eu encontrei uma solução mais simples:

$('#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'); 
});

Espero que ajude!

sonhador
fonte
3

Um aprimoramento da ideia hackeada de Nick Craver para colocar HTML personalizado em um título de caixa de diálogo jquery:

var newtitle= '<b>HTML TITLE</b>';
$(".selectorUsedToCreateTheDialog").parent().find("span.ui-dialog-title").html(newtitle);
Storvas
fonte
Prefiro não ser hacky quando não preciso, e já existe uma maneira endossada pelo jquery de definir títulos HTML: substituindo o método _title. Já foi abordado nesta resposta SO: stackoverflow.com/questions/14488774/…
cincodenada
2

Tentei implementar o resultado de Nick que é:

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

Mas isso não funcionou para mim porque eu tinha vários diálogos em uma página. Em tal situação, ele apenas definirá o título correto na primeira vez. Tentar grampear comandos não funcionou:

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

Corrigi isso adicionando o título aos argumentos da função javascript de cada caixa de diálogo na página:

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'});
}
Tim B.
fonte
0

Melhor ainda!

    jQuery( "#dialog" ).attr('title', 'Error');
    jQuery( "#dialog" ).text('You forgot to enter your first name');
user4629979
fonte
A primeira linha não mudará o título do diálogo. Não existe tal atributo na caixa de diálogo do jQuery UI. O segundo mudará o conteúdo da caixa de diálogo em si, mas não é isso que o usuário está perguntando. E isso supondo que o idde seu diálogo seja #dialog.
Pere