2010-03-24 4 views
0

J'utilise le plugin qTip pour publier une URL imdb dans un script grabber IMDB et afficher des informations sur cette URL.Jquery données ajax

Tout fonctionne jusqu'à ce que j'ai plus de un qtip sur la page.

Ce que je dois faire Publie seulement les données de l'image qui est survolée. C'est le code qui devrait avoir un peu plus de sens que moi.

Script -

var link = $("#link").val(); 
var imdbLink = { "link" : link }; // note change to data... 

$('.moviebox').each(function() { 
    $(this).qtip({ 
     style: { name: 'light' }, 
     content: { 
     method: 'GET', 
     data: imdbLink, // you could make this { "link" : link } 
     url: '/bin/imdb/imdb.example.php', 
     text: '<img class="throbber" src="/images/loading.gif" alt="Loading..." />' 
     }, 
     position: { 
      corner: { 
       target: 'bottomright', 
       tooltip: 'bottomleft' 
      } 
      } 
    }); 
    }); 

html--

<div class="moviebox rounded"><a href="#"> 
    <img src="http://1.bp.blogspot.com/_mySxtRcQIag/S6deHcoChaI/AAAAAAAAObc/Z1Xg3aB_wkU/s200/rising_sun.jpg" /> 
    <form method="get" action=""> 
    <input type="text" name="link" id="link" style="display:none" value="http://us.imdb.com/Title?0107969"/> 
</form> 
    </a></div> 



    <div class="moviebox rounded"><a href="#"><img src="http://2.bp.blogspot.com/_mySxtRcQIag/S6dUoGd4_TI/AAAAAAAAObM/4Mbohcy0Owo/s200/grumpy_old_men.jpg" /> 
    <form method="get" action=""> 
    <input type="text" name="link" id="link" style="display:none" value="http://us.imdb.com/Title?0107050"/> 
</form> 
</a> 

Vous verrez que les deux entrées ont le même ID qui est à l'origine d'un problème. comment pourrais-je contourner cela en gardant les ID les mêmes ????

Répondre

1

Une solution simple consiste à utiliser la classe à la place de l'ID. En plus de cela, ID sont destinés à être unique, ne devrait pas les utiliser plus d'une fois sur la même page de toute façon.

+0

Modifié en classe. N'a pas aidé le script ne sait toujours pas lequel choisir – user272899

+0

Eh bien, vous devez probablement utiliser .each() pour faire une boucle à travers eux. Je pense que le plus simple est juste d'ajouter $ ('. Link') .val() dans votre boucle $ ('. Movie'). Si cela ne vous dérange pas la redondance, j'ai une méthode stupide qui pourrait fonctionner. Sortez les 2 premières lignes, au lieu de $ ('. Link'). Attr ('id', function (e) {return 'id' + e;} Dans votre $ ('. Movie'). Chaque boucle, $ ('.movie'). each (function (x) {... data: {'link:' + $ ('id' + x) .val();}, ...} Voyons voir si cela fonctionne – Mon

+0

vous avez besoin d'un moyen de les différencier, mon est correct en ce que les identifiants doivent être uniques (s'ils ne le sont pas, jQuery utilisera le premier qu'il rencontre, je crois) – Jason

0
$('.moviebox').each(function() { 
    var imdbLink = { "link" : $(this).find("input.link").val() }; 
    $(this).qtip({ 
     // qTip code 
    }); 
}); 
+2

Une petite explication serait utile. – showdev