2010-08-11 5 views
2

Pour une application que j'écris, j'ai besoin de charger dynamiquement du contenu dans un DIV lorsqu'un formulaire est soumis.Chargement jQuery qTap code dynamiquement

Ce contenu chargé dynamiquement nécessite plusieurs info-bulles à afficher automatiquement au moment du chargement (pas besoin d'un événement pour le déclencher). J'ai choisi qTip parce qu'il a des paramètres pour le faire, contrairement à la plupart des autres infobulles que j'ai trouvé, qui nécessitent un événement pour déclencher l'info-bulle (comme onmouseover).

Ce code Qtip utilisé pour y parvenir:

 
$(function(){ 
    $('#someelement').qtip({ 
     content: 'This is the message!', 
     show: { ready: true, when: false }, 
     hide: { false }, 
     position: { 
      corner: { 
       target: 'topLeft', 
       tooltip: 'bottomRight' 
      } 
     }, 
     style: { 
         ............ styling code here................ 
      } 
     } 
    }) 
}); 

Cela fonctionne bien dans une forme ou que je l'essayer. La pointe apparaît avec succès.

Toutefois, l'info-bulle n'apparaît pas si je charge dynamiquement ce code avec le contenu.

Le contenu est en cours de chargement à l'aide de la bonne forme de Malsup et des plugins taconite.

Toutes les idées seraient grandement appréciées!

Bien sûr, si vous connaissez une autre méthode ou un autre plugin que je pourrais utiliser pour obtenir le même effet, ne vous gênez pas pour le suggérer. :)

+0

Vous dites "l'info-bulle n'apparaît pas si je charge dynamiquement ce code avec le contenu". Qu'est-ce que "ce code"? –

+0

"Ce code" est le code que vous voyez ci-dessus. J'insère dynamiquement du texte et du HTML dans une page. Avec le code jquery que vous voyez ci-dessus pour activer plusieurs info-bulles dans ce texte, je l'insère dynamiquement. Il semble que qTip ne soit pas conscient du texte inséré dynamiquement et ne trouve pas les éléments auxquels appliquer les conseils d'outil. – lvp1138

Répondre

2

J'ai déjà eu ce problème et voici comment je l'ai résolu. Mettez le code du plugin dans une fonction séparée et appeler le document prêt:

$(function(){ 
    loadQtip(); 
}); 

function loadQtip() { 
    $('#someelement').qtip({ 
     content: 'This is the message!', 
     show: { ready: true, when: false }, 
     hide: { false }, 
     position: { 
      corner: { 
       target: 'topLeft', 
       tooltip: 'bottomRight' 
      } 
     }, 
     style: { 
         ............ styling code here................ 
      } 
     } 
    }) 
} 

Ensuite, lorsque vous ajoutez de nouvelles données appelez à nouveau la fonction:

... 
complete: function() { 
    loadQtip(); 
} 

Vous trouverez pour des événements tels que clic , change etc la méthode .live() fonctionne un régal, mais lorsque vous définissez un plugin à un élément, il n'y a pas de méthode persistante.

+0

J'aime votre idée! J'ai créé une fonction, à laquelle je peux transmettre des paramètres. Les paramètres sont essentiellement le texte de l'info-bulle et l'élément qui aura l'info-bulle. Je peux alors appeler cette fonction à partir des commandes EVAL de taconite, ce qui est fondamentalement ce que j'appelle exécuter du code jQuery quand j'appelle le plugin taconite. Mais ... il semble que qtip ne soit toujours pas au courant du contenu inséré dynamiquement. Je peux exécuter ma fonction, après l'appel "ajax", et appliquer des info-bulles à de nombreux éléments du site web. Cependant, il semble que qTip ne soit pas conscient des éléments que j'insère dynamiquement. :( – lvp1138

+0

Donc, en gros, il semble que qTip ne trouve pas dans le DOM les éléments que je viens d'insérer ... – lvp1138