Se connecter avec
S'enregistrer | Connectez-vous

Vous pensez être un expert en ajax jquery, thickbox?

Dernière réponse : dans Programmation

alors résoudre mon problème ne devrait pas vous poser de soucis...

je cherche à customiser thickbox
je prends les paramètres des images ds une base msql
et voudrais rajouter une div #TB_description à l'intérieur de la fenêtre pour en afficher la description juste à côté du titre de l'image.
voici la page d'index appelant thickbox3_1.js script situé plus bas
si je place la variable description directement ds thickbox3_1.js
la fenêtre s'affiche , le div aussi ainsi que le contenu de la variable

donc un problème de transmission /recuperation de variable???
merci de votre sollicitude,

  1. <script type="text/javascript">
  2.  
  3. var mycarousel1_itemList = [
  4. <?php
  5.  
  6. $connexion = Connexion ();
  7. $query = "SELECT * FROM images WHERE categorie = ".$categorie." ";
  8. $result = mysql_query($query)or die(mysql_error());
  9. $nbligne = mysql_num_rows($result);
  10. $i = 0;
  11. while($row = mysql_fetch_array($result))
  12. {
  13. $image= $row['src'];
  14. $titre= $row['titre'];
  15. $description = $row['description'];
  16. echo '{url: "'.$image.'", title: "'.$titre.'", description: "'.$description.'"}';
  17. if ($i++ < $nbligne - 1) echo ',';
  18. }
  19. mysql_close();
  20. ?>
  21. ];
  22. var mycarousel2_itemList = [];
  23. function mycarousel1_itemLoadCallback(carousel, state)
  24. { for (var i = carousel.first; i <= carousel.last; i++) {
  25. if (carousel.has(i)) {
  26. continue; }
  27.  
  28. if (i > mycarousel1_itemList.length) {
  29. break;
  30. }
  31. // Create an object from HTML
  32. var item = jQuery(mycarousel1_getItemHTML(mycarousel1_itemList[i-1])).get(0);
  33. // Apply thickbox
  34. tb_init(item);
  35. carousel.add(i, item);
  36. }
  37. };
  38. function mycarousel2_itemLoadCallback(carousel, state)
  39. {
  40. for (var i = carousel.first; i <= carousel.last; i++) {
  41. if (carousel.has(i)) {
  42. continue;
  43. }
  44.  
  45. if (i > mycarousel2_itemList.length) {
  46. break;
  47. }
  48. // Create an object from HTML
  49. var item = jQuery(mycarousel2_getItemHTML(mycarousel2_itemList[i-1])).get(0);
  50. // Apply thickbox
  51. tb_init(item);
  52. carousel.add(i, item);
  53. }
  54. };
  55.  
  56. /**
  57. * Item html creation helper.
  58. */
  59. function mycarousel1_getItemHTML(item)
  60. {
  61. var url_m = item.url.replace(/_s.jpg/g, '.jpg');
  62. return '<a href="' + url_m + '" title="' + item.title + '"><img src="' + item.url + '" width="135" height="135" border="0" alt="' + item.title + '" /></a>'
  63. };
  64.  
  65. jQuery(document).ready(function() {
  66. jQuery('#mycarousel1').jcarousel({
  67. easing: 'bounceout',
  68. animation: 800,
  69. size: mycarousel1_itemList.length,
  70. itemLoadCallback: {onBeforeAnimation: mycarousel1_itemLoadCallback}
  71. });
  72. });
  73. function mycarousel2_getItemHTML(item)
  74. {
  75. var url_m = item.url.replace(/_s.jpg/g, '.jpg');
  76. return '<a href="' + url_m + '" title="' + item.title + '"><img src="' + item.url + '" width="135" height="135" border="0" alt="' + item.title + '" /></a>'
  77. };
  78. jQuery(document).ready(function() {
  79. jQuery('#mycarousel2').jcarousel({
  80. size: mycarousel2_itemList.length,
  81. itemLoadCallback: {onBeforeAnimation: mycarousel2_itemLoadCallback}
  82. });
  83. });
  84. </script>



  1. // description= "test";// modif jerry
  2.  
  3. // modif jerry (below)
  4. $("#TB_window").append("<a href='' id='TB_ImageOff' title='Close'><img id='TB_Image' src='"+url+"' width='"+imageWidth+"' height='"+imageHeight+"' alt='"+caption+"'/></a>" + "<div id='TB_caption'>" +caption+ "<div id='TB_description'>" +description+ "</div><div id='TB_secondLine'>" + TB_imageCount + TB_PrevHTML + TB_NextHTML + "</div></div><div id='TB_closeWindow'><a href='#' id='TB_closeWindowButton' title='Close'>close</a> or Esc Key</div>");
  5.  
  6.  
  7.  
  8. {//this means the window is already up, we are just loading new content via ajax
  9. $("#TB_ajaxContent")[0].style.width = ajaxContentW +"px";
  10. $("#TB_ajaxContent")[0].style.height = ajaxContentH +"px";
  11. $("#TB_ajaxContent")[0].scrollTop = 0;
  12. $("#TB_ajaxWindowTitle").html(caption);
  13. $("#TB_description").html(description); //modif jerry est-ce nécessaire?
  14. }
Lassé par la pub ? Créez un compte


chtite image:



le premier script était une partie de la page d'accueil (celle ou sont affichés les miniatures, le second le script thickbox bidouillé par mes soins mais qui ne marche pas,
ce soir je mettrai surement un lien vers le script complet mais normalement tu devrais déjà mieux voir!



Ne connaissant pas thickbox voilà ce que je te propose :


Dans ta page tu te fais un div caché, nommé pour l'exemple divCache. (1)
Tu fais après un observe sur ton image, qui au clic va faire un appel ajax. (2)
Le contenu retourné par cet appel sera écrit dans ton divCache. (3)
Après, il te suffit de jouer avec l'opacité de tes éléments. (4)


  1. 1/ Css: à toi de faire, mais ne pas oublier un z-index
  2. 2/ JS : $('divCache').observe(...) + Ajax.Updater(....)
  3. 3/ A toi de trouver où mettre ton div pour qu'il réceptionne le contenu de l'appel ajax (cf Ajax.Updater)
  4. 4/ JS : $('divCache').setOpacity(....);


J'utilise prototype et scriptaculous, mais tout ceci se porte sans trop de difficulté avec d'autres librairies

Reviens si tu as des questions.
Lassé par la pub ? Créez un compte