Foros del Web » Programando para Internet » Jquery »

Acceder a un div desde Jquery

Estas en el tema de Acceder a un div desde Jquery en el foro de Jquery en Foros del Web. Espero me puedan ayudar con un problema. Tengo una lista de articulos. Los cuales al darle click me tiene que aparecer una modal window que ...
  #1 (permalink)  
Antiguo 27/04/2012, 16:56
 
Fecha de Ingreso: julio-2009
Mensajes: 21
Antigüedad: 15 años, 5 meses
Puntos: 0
Pregunta Acceder a un div desde Jquery

Espero me puedan ayudar con un problema.

Tengo una lista de articulos. Los cuales al darle click me tiene que aparecer una modal window que me tiene que mostrar, el nombre del articulo, su foto y una descripción.

El CSS es como se muestra en el siguiente codigo.

Código HTML:
<div id="contenedor">
    <a href="#"><img class="wmodal" src="imagenes/articulo1.jpg"></a>
    <p id="titulo" >Nombre del articulo 1</p>
    <div id="Descripcion" style="Display: none;"> 
          Descripcion del articulo 1. 
    </div>
</div>

<div id="contenedor">
    <a href="#"><img class="wmodal" src="imagenes/articulo2.jpg"></a>
    <p id="titulo" >Nombre del articulo 2</p>
    <div id="Descripcion" style="Display: none;"> 
          Descripcion del articulo 2. 
    </div>
</div> 
Elegi poner el mismo nombre para todos los divs para asi poder crear solo una funcion en jquery que funcione para todos, esto es por que tengo bastantes articulos y no quiero repetir tanto codigo.

No consigo, imprimir en la modal window el texto del #titulo y #Descripcion de cada imagen que doy click.

Es decir, si doy click en articulo2.jpg me manda el titulo y descripcion de el articulo1.

La funcion que tengo en Jquery es la siguiente.

Código PHP:
jQuery(function ($) {
    $(
'#contenedor .wmodal').click(function (e) {
     $.
modal("<div><h1>" + $("#titulo").html() + "</h1>" + $(this) + $("#Descripcion").html() + "</div>");
     return 
false;
    });
}); 
He llamado esos divs de diferentes formas pero no consigo el resultado deseado, he intentado lo siguiente.

Código PHP:
$.modal($(this).next("#Descripcion").html()); 

Y todas las formas que intento la salida es Null ó [object Object] pero no obtengo el texto de cada div seleccionado.

Espero me puedan ayudar
  #2 (permalink)  
Antiguo 28/04/2012, 09:34
Avatar de Naahuel  
Fecha de Ingreso: marzo-2011
Ubicación: localhost
Mensajes: 796
Antigüedad: 13 años, 9 meses
Puntos: 192
Respuesta: Acceder a un div desde Jquery

1.-
Cita:
The id attribute specifies a unique id for an HTML element (the value must be unique within the HTML document).
http://www.w3schools.com/tags/att_standard_id.asp

Básicamente, el atributo ID es único en el documento.

Cita:
Es decir, si doy click en articulo2.jpg me manda el titulo y descripcion de el articulo1.
Eso es esperable y lógico.

Con esto dicho, vamos a sacar los id's y usar clases:

Código HTML:
Ver original
  1. <div class="contenedor">
  2.     <a href="#"><img class="wmodal" src="imagenes/articulo1.jpg"></a>
  3.     <p class="titulo" >Nombre del articulo 1</p>
  4.     <div class="descripcion" style="display: none;">
  5.           Descripcion del articulo 1.
  6.     </div>
  7. </div>
  8.  
  9. <div class="contenedor">
  10.     <a href="#"><img class="wmodal" src="imagenes/articulo2.jpg"></a>
  11.     <p class="titulo" >Nombre del articulo 2</p>
  12.     <div class="descripcion" style="display: none;">
  13.           Descripcion del articulo 2.
  14.     </div>
  15. </div>

2.- Tu script busca el mismo elemento todo el tiempo por estar usando ID's. Es lógico que encuentre sólo el primero.
Cambiamos los Id's por clases y cambiamos los selectores y las variables para optimizar un poco el script:

Código Javascript:
Ver original
  1. jQuery(function ($) {
  2.     $('.contenedor a').click(function (e) {
  3.     //guardamos el elemento <a> al que se le hizo click
  4.     var $elem = $(this);
  5.     //el contenedor general es padre del <a> al que se hizo click
  6.     var $cont = $elem.parent();
  7.    
  8.     //obtenemos los datos de cada elemento dentro del contenedor actual
  9.     var titulo       = $cont.find('.titulo').html();
  10.     var descripcion  = $cont.find('.descripcion').html();
  11.    
  12.     //abrimos el cuadro modal
  13.     $.modal("<div><h1>" + titulo + "</h1>" + descripcion + "</div>");
  14.    
  15.     //evitamos accion por defecto del <a>
  16.     e.preventDefault()
  17.     });
  18. });


Estudiá los comentarios y fijate bien cómo funciona.
__________________
nahueljose.com.ar
  #3 (permalink)  
Antiguo 30/04/2012, 15:28
 
Fecha de Ingreso: julio-2009
Mensajes: 21
Antigüedad: 15 años, 5 meses
Puntos: 0
Respuesta: Acceder a un div desde Jquery

Amigo, muchas gracias.

Me ha servido de mucha ayuda tu respuesta, solo que ahora me falta enviar la imagen, no se si es problema del script de SimpleModal, que a la hora de mandar la imagen con la clase y con el codigo css que le pongo a la ventana modal, no me sale la imagen o me sale que es un objeto, asi es como tengo eso parte ahora. Cabe mencionar que si mando sola la imagen si me aparece. Gracias por sus respuestas

Código PHP:
var $pic $container.find(".wmodal");

$.
modal("<div><h1>" $title "</h1>" $pic $descrip "</div>"); 
  #4 (permalink)  
Antiguo 30/04/2012, 15:39
Avatar de Naahuel  
Fecha de Ingreso: marzo-2011
Ubicación: localhost
Mensajes: 796
Antigüedad: 13 años, 9 meses
Puntos: 192
Respuesta: Acceder a un div desde Jquery

Y claro, $pic es un objeto jQuery. Necesitás obtener de ahí lo que quieras. Como ser el src de la imagen.

Probá algo así:
Código Javascript:
Ver original
  1. $.modal("<div><h1>" + $title + "</h1>" + "<img src='" + $pic.attr('src') + "' />" + $descrip + "</div>");
__________________
nahueljose.com.ar
  #5 (permalink)  
Antiguo 30/04/2012, 16:58
 
Fecha de Ingreso: julio-2009
Mensajes: 21
Antigüedad: 15 años, 5 meses
Puntos: 0
Respuesta: Acceder a un div desde Jquery

Muchas gracias amigo, Me has ayudado muchisimo.

Saludos

Etiquetas: Ninguno
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 19:06.