2010-09-24 5 views
1

par exemple, je l'appelle via newDialog("This is title !", "this is my content");Jquery-UI: dialogue n'est pas une erreur de fonction

function newDialog(mytitle, mycontent){ 
    var $dialog = $('<div id="mydialog"></div>') 
     .html(mycontent) 
     .dialog({ 
      autoOpen: false, 
      modal: false, 
      title: mytitle 
     }); 
    $dialog.dialog('open'); 
    return false 
} 

Ceci est l'erreur

Erreur:. $ ("") Html (myCONTENT) .dialog est pas une fonction

Qu'est-ce que cela signifie? Je me suis assuré que tous les fichiers jquery-UI et jquery js sont entièrement chargés en utilisant le plugin firebug pour confirmer tout cela. Je ne comprends pas pourquoi il s'arrêterait soudainement de fonctionner. J'ai essayé avec $ (document) .click (newDialog); et $ ('body'). delegate (': not (#mydialog *, #mydialog)', 'clic', nouveauDialog); mais l'erreur ne s'en va pas. Ce dernier est utilisé afin que les nouvelles boîtes de dialogue n'apparaissent pas si le dialogue est accidentellement cliqué.

$(top.document).ready(function() { 
var fruits = new Array(); 

    $(document).click(newDialog("happy title", "happy content to keep everyone happy")); 
    //$('body').delegate(':not(#mydialog *, #mydialog)','click', newDialog); 

}); 

Répondre

1

Vérifiez que le plug-in dialog est correctement installé. Il ne devrait y avoir aucune autre raison pour laquelle cela ne devrait pas fonctionner.

Puis-je saisir cette occasion pour une auto-promotion éhontée pour vous offrir une alternative. J'ai écrit un plugin jQuery qui fait ce que vous essayez de faire. C'est open source si vous êtes intéressé: http://code.google.com/p/dialogwrapper/

+0

vous avez raison. mais le plugin de dialogue est correctement installé. – KJW

+1

vous savez que je suis toujours ouvert à de meilleures solutions. Merci pour la suggestion y jeter un coup d'oeil. Vous aviez raison, il ne devrait pas y avoir d'autre raison pour que cela ne fonctionne pas, et oui, ce n'était pas le code mais simplement le javascript fonctionnant sur une autre application, l'application elle-même causait des problèmes. testé le même javascript dans d'autres endroits et ça fonctionne bien! – KJW

5

Pour la question mise à jour: Vous avez toujours les mêmes problèmes que bfeore, lors de l'appel comme ceci:

$(document).click(newDialog); 

Il est appelé sans aucun paramètre, ce qui signifie .html() est encore en train undefined transmis. Vous devez transmettre des paramètres, par exemple:

$(document).click(function() { newDialog("Title", "Content"); }); 

Ou donner les paramètres des valeurs par défaut, par exemple:

function newDialog(mytitle, mycontent){ 
    mytitle = mytitle || "Default Title"; 
    mycontent = mycontent || "Default Content"; 

Pour la question originale: Vos noms de variables sont éteintes, ceci:

.html(mycontent) 

devrait être:

.html(mycon) 

Actuellement, comme c'est undef Ined, il appelle .html()obtenir une chaîne de retour, pas réglage le code HTML. La même chose est vraie pour le titre, votre paramètre est mytit, la variable que vous essayez d'utiliser est mytitle.

+0

Malheureusement, je souhaite que ce soit un problème de nommage var simple. Je me suis assuré que les mêmes variables sont utilisées, et la même erreur se produit. – KJW

+0

@Kim - Dans ces cas, vous ne passez toujours pas de paramètre, ce qui signifie qu'il est * encore * indéfini, entraînant la même erreur, vous devez réellement passer le paramètre 'mycontent', ou lui donner une valeur par défaut ... ça va être 'non défini 'autrement. J'apprécie le downvote ...vous rejetez la réponse * après * vous avez corrigé une facette ici, mais vous avez toujours le ** problème **, vous passez 'undefined' à' .html (var) '. –

+0

soupir. J'ai écrit cet exemple rapide et je ne l'ai pas écrit correctement. C'est pourquoi vous abordez le mauvais problème. mon mauvais, corrigé le code d'exemple original. Cependant, l'erreur persiste. Je ne sais pas pourquoi c'est presque comme si jquery-ui.js n'était pas chargé mais que firebug le montre. – KJW