32 - Mostrar un tooltip con datos recuperados del servidor en forma asincrónica


Implementaremos un problema utilizando todos los conceptos aprendidos hasta ahora.

ProblemaImplementar un Tooltip con jQuery recuperando la información a mostrar del servidor en forma asincrónica.
Agregar una imagen al tooltip. En el servidor ya hay cuatro imágenes llamadas imagen1.jpg, imagen2.jpg etc. y se encuentran en el directorio donse se almacenan las páginas. ( <img src="imagen1.jpg"> )

pagina1.html

<!DOCTYPE html>
<html>

<head>
  <title>Ejemplo de jQuery</title>
  <meta charset="UTF-8">
  <link rel="StyleSheet" href="estilos.css" type="text/css">
</head>

<body>
  <p>Entre con el mouse al recuadro.</p>
  <div class="cuadradito" id="c1"></div>
  <div class="cuadradito" id="c2"></div>
  <div class="cuadradito" id="c3"></div>
  <div class="cuadradito" id="c4"></div>

  <script src="https://code.jquery.com/jquery-3.4.1.min.js"></script>
  <script src="funciones.js"></script>
</body>

</html>

estilos.css

.cuadradito{
  background-color: #f00;
  height: 50px; 
  width: 50px;
  margin:3px;
  z-index: -1;
}

#divmensaje {
  background-color: yellow;
   position: absolute; 
   padding: 5px;
   width:250px;
   left:120px;
   top:100px;
  z-index: 100;
}

funciones.js

$(document).ready(function () {
  $("body").append('<div id="divmensaje">hhhh</div>');
  $("#divmensaje").hide();
  $(".cuadradito").hover(function (e) {
    $("#divmensaje").show();
    $("#divmensaje").css("left", e.clientX + document.body.scrollLeft + 5);
    $("#divmensaje").css("top", e.clientY + document.body.scrollTop + 5);
    $("#divmensaje").load("pagina1.php?cod=" + $(this).attr('id'));
  },
    function () {
      $("#divmensaje").hide();
    })
  $(".cuadradito").mousemove(function (e) {
    $("#divmensaje").css("left", e.clientX + document.body.scrollLeft + 5);
    $("#divmensaje").css("top", e.clientY + document.body.scrollTop + 5);
  })
})

pagina1.php

<?php
  if ($_REQUEST['cod']=='c1')
  {
    echo "<img src=\"imagen1.jpg\">";
    echo "<p>Primer tooltip.</p>";
    echo "<p>aaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaa aaaaaa aaaaaaaaaa";
    echo "aaaaaaaaaaaaaaaaaaa aaaaaaaaa aaaaaaaaaaaaa aaaaaaaaaaaaaaaa";
    echo "aaaaaaaaaaaaaaaaaaa aaaaaaaa aaaaaaaaaaaaaa aaaaaaaaa aaaaaaa";
    echo "aaaaaaaaaaaaaa aaaaa aaaaaaaaaaaaaaaaaaaaaa aaaaaa aaaaaaaaaa";
    echo "aaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaa aaaaaaa aaaaaaaaaaaaaaaa</p>";
  }
  if ($_REQUEST['cod']=='c2')
  {    
    echo "<img src=\"imagen2.jpg\">";
    echo "<p>Segundo tooltip.</p>";
    echo "<p>bbbbbbbb bbbbbbbbbbb bbbbbbbb bbbbbbbbbbbbbb bbbbbbbbbbb bb";
    echo "bbbbbbbb bbbbbbbbbb bbbbbbbbbbbb bbbbbbbbbb bbbbbbbbbbb bbb</p>";
  }
  if ($_REQUEST['cod']=='c3')
  {
    echo "<img src=\"imagen3.jpg\">";
    echo "<p>Tercer tooltip.</p>";
  }
  if ($_REQUEST['cod']=='c4')
  {
    echo "<img src=\"imagen4.jpg\">";
    echo "<p>Cuarto tooltip.</p>";
  }

?>

Como podemos ver el código JavaScript utilizando la librería jQuery queda muy compacto y reducido:

$(document).ready(function () {
  $("body").append('<div id="divmensaje">hhhh</div>');
  $("#divmensaje").hide();
  $(".cuadradito").hover(function (e) {
    $("#divmensaje").show();
    $("#divmensaje").css("left", e.clientX + document.body.scrollLeft + 5);
    $("#divmensaje").css("top", e.clientY + document.body.scrollTop + 5);
    $("#divmensaje").load("pagina1.php?cod=" + $(this).attr('id'));
  },
    function () {
      $("#divmensaje").hide();
    })
  $(".cuadradito").mousemove(function (e) {
    $("#divmensaje").css("left", e.clientX + document.body.scrollLeft + 5);
    $("#divmensaje").css("top", e.clientY + document.body.scrollTop + 5);
  })
})


Retornar