2010-04-23 8 views
15

je le code suivant:Comment changer le titre div en utilisant jquery

<div id="DivPassword" title="test" > 

Je veux changer le titre div et j'ai le code suivant:

function ChangeAttribute() { 
     $("#DivPassword") 
      .attr('title', 'Photo by Kelly Clark'); 
     $('#DivPassword').dialog('open'); 
     return false; 
    } 

Lorsque la le dialogue est ouvert, le titre est encore test! Si je n'attribue aucun titre à la div, la boîte de dialogue n'affiche aucun titre. Comment puis-je corriger cela?


function ChangeAttribute() { 
     $("#DivPassword") 
      .attr('title', 'Photo by Kelly Clark') 
      .dialog('open'); 

     alert($("#DivPassword").attr('title')); 
    } 

$('#DivPassword').dialog({ 
      autoOpen: false, 
      width: 800, 
      buttons: { 
       "Cancel": function() { 
        $(this).dialog("close"); 
       }, 
       "Accept": function() { 
       alert($(this).attr('title')); 
        $(this).dialog("close"); 
       } 
      } 
     }); 

<script type="text/javascript"> 
    var Dtitle; 
    $(function() { 
     $('#DivPassword').dialog({ 

      autoOpen: false, 
      width: 800, 
      title : Dtitle, 
      buttons: { 
       "Cancel": function() { 
        $(this).dialog("close"); 
       }, 
       "Accept": function() { 
        $(this).dialog("close"); 
       } 
      } 
     }); 
    }); 

    function ChangeAttribute(name) { 
     $("#DivPassword") 
      .attr('title', name) 
      .dialog('open'); 
     Dtitle = $("#DivPassword").attr('title'); 
     alert(Dtitle); 
    } 


</script> 

Répondre

1

Merci pour toutes les réponses.

Le $('#DivPassword').dialog({ devait être après .dialog('open');

Le était de faire plus simple comme suit:

$("#DivPassword") 
      .dialog('open'); 
     $('#DivPassword').dialog({ 
      autoOpen: false, 
      title: $('#DivPassword').attr('title') + name, 
      width: 400, 
      buttons: { 
       "Cancel": function() { 
        $(this).dialog("close"); 
       }, 
       "Accept": function() { 
        $(this).dialog("close"); 
       } 
      } 
     }); 
0

Il semblerait que votre plugin lit le titre avant qu'il n'atteigne la fonction ChangeAttribute. Le code que vous avez posté va certainement changer l'attribut du titre, donc il y a quelque chose d'autre qui se passe dans les coulisses.

Aussi, pendant que je suis ici, n'oubliez pas d'utiliser le chaînage. La plupart des fonctions de jQuery renvoient à nouveau le même objet:

$("#DivPassword").attr('title', 'Photo by Kelly Clark').dialog('open'); 

// or like this, perhaps easier to read: 

$("#DivPassword") 
    .attr('title', 'Photo by Kelly Clark') 
    .dialog('open') 
; 
+0

J'ai essayé d'ajouter des alertes ... comme dans le code édité ci-dessus. Mais bien que les bothalles montrant le bon titre, le titre n'est pas affiché. – learning

0

Essayez de définir l'attribut title après l'ouverture de la boîte de dialogue. Probablement votre dialog.open() va réinitialiser l'attribut title.

Je pense que vous pouvez fournir une fonction de rappel pour l'événement ouvert.

Voir open

+0

S'il avait été réinitialisé, je ne pense pas que le titre initial aurait été affiché! Qu'est ce que tu penses de ça? Le nouveau titre affecté n'est pas affiché. – learning

21

Vous pouvez modifier le titre d'un dialogue directement avec:

$('#DivPassword').dialog('option', 'title', 'Photo by Kelly Clark'); 

Cela fonctionnera dans votre cas. En fait, votre code pour changer l'attribut title est correct. Je suppose que le plugin de dialogue crée le dialogue quand .dialog est appelé en premier. La méthode ouverte affiche simplement la boîte de dialogue, sans la recréer à partir de la div.

+0

J'ai changé le code comme dans la partie éditée ci-dessus. Pourtant, je ne peux pas comprendre pourquoi cela ne fonctionne pas. – learning

+0

Vous n'utilisez toujours pas la méthode dialog pour définir le titre. Vous pouvez ajouter ma ligne juste avant votre alerte et cela devrait fonctionner. –

+0

fonctionne parfaitement - J'essayais tous ces autres moyens de différents postes et articles. C'est clairement la solution la plus élégante .. aka, le meilleur! J'ai appris/travaillé avec des boîtes de dialogue de jquery pendant quelques mois maintenant, et seulement voyant cette manière de faire des choses ici pour la première fois. Vous ne savez pas pourquoi les docs, tuts et posts ne mettent pas davantage l'accent sur ce type de solution car il est très utile/puissant dans de nombreuses situations de code différentes. .. Un grand merci pour le partage d'un grand one-liner – gnB

0

Spécifie le titre de la boîte de dialogue. Le titre peut également être spécifié par l'attribut de titre sur l'élément de la boîte de dialogue.

exemples de code

Initialiser une boîte de dialogue avec l'option de titre spécifié.

$(".selector").dialog({ title: 'Dialog Title' }); 

Récupère ou définit l'option de titre, après init.

//getter 
var title = $(".selector").dialog("option", "title"); 
//setter 
$(".selector").dialog("option", "title", 'Dialog Title'); 

source.

pour répondre à the dialog doesnt show any title.

0

Je l'ai fait:

$("#div1").dialog({ autoOpen: false, modal: true, height: 420, width: 750, resizable: false }); 
//more code 
$("#div1").dialog("option", "title", "joopla, here is a new title"); 

Cela fonctionne pour moi

1
$("#div1").dialog({ autoOpen: false, modal: true, height: 420, width: 750, resizable: false }); 
// more code 
$("#div1").dialog("option", "title", "joopla, here is a new title"); 

a fait l'affaire pour moi ..

7

Vous pouvez modifier attr de tout élément DOM avec jQuery aussi facile que:

$("#divMessage").attr('title', 'Type here the new Title text'); 

Cheers!

Questions connexes