2010-02-19 5 views
4

Je souhaite passer un paramètre dynamique avec qTip, mais cela échoue. my_ajax_controller.php affiche simplement le type de variable, mais pas q.Paramètres dynamiques pour contenu dynamique avec qTip

$('a.menu_help').qtip({ 
    content: { 
     url:'my_ajax_controller.php', 
     data: 'type=help_menu&q='+$(this).attr('id'), 
     method: 'get' 
    }, 
    show: 'mouseover', 
    hide: 'mouseout' 
}); 

Cependant, une valeur statique q œuvres:

$('a.menu_help').qtip({ 
    content: { 
     url:'my_ajax_controller.php', 
     data: 'type=help_menu&q=toto', 
     method: 'get' 
    }, 
    show: 'mouseover', 
    hide: 'mouseout' 
}); 

est-il pas moyen de passer une valeur dynamique aux données de paramètres?

Merci d'avance!

Florent

Répondre

-7

Il devrait fonctionner, mais juste essayer de voir ce que vous passez comme pièce d'identité, ou transmettre des données en tant que collection quelque chose comme:

 
data : {'type':'help_menu', 'q':id} 

Ou

 
$('a.menu_help').qtip({ 
    var id = $(this).attr('id'); 
    alert(id); 
    content: { 
     url:'my_ajax_controller.php', 
     data: 'type=help_menu&q='+ id, 
     method: 'get' 
    }, 
    show: 'mouseover', 
    hide: 'mouseout' 
}); 
+0

Cela ne fonctionne pas. –

+0

Je confirme que cela ne fonctionne pas, vous faites des affectations dans une définition d'objet. Vous obtiendrez un 'missing: after property id' –

8

essayer quelque chose comme ceci:

$('a.menu_help').each(function(){ 
    $currentLink = $(this); 
    $currentLink.qtip({ 
     content: { 
      url:'my_ajax_controller.php', 
      data: 'type=help_menu&q='+$currentLink.attr('id'), 
      method: 'get' 
     }, 
     show: 'mouseover', 
     hide: 'mouseout' 
}); 

Je n'ai pas testé, mais je l'ai fait quelque chose de similaire. Je ne peux pas le trouver maintenant.

+0

Cette solution fonctionne bien. – Jeremy

+0

Sera-t-il encore performant avec de nombreux éléments qtipped? –

+0

la performance ne devrait pas être très différente si vous les incliniez tous à la fois. – Patricia

3

J'ai eu le même problème et je résolu avec ce code. Fonctionne bien avec qtip 1.0 rc3 et JQuery 1.4.2. Notez que qtip a et lance avec jquery> 1.3. Google pour des informations connexes, mais il est facile de corriger l'ajout d'une seule ligne sur jquery.qtip.js

$('.username_link').each(function(){ 
    $(this).click(function(){ return false });//JS enabled => link default behavior disabled. Gaceful degradation 
    $(this).qtip({ 
    content: { url: '/users/links', 
       data: { id: $(this).attr('data-id') }, 
       method: 'post' 
      }, 
    show: 'click', 
    hide: 'mouseout' 
    }) 
});