Foros del Web » Programando para Internet » Jquery »

Pasar variable a ventana modal jquery

Estas en el tema de Pasar variable a ventana modal jquery en el foro de Jquery en Foros del Web. Hola buenas.. Estoy realizando una página en la que muestro un detalle del producto, pero para ver todas las imágenes del producto lanzo una ventana ...
  #1 (permalink)  
Antiguo 22/04/2012, 14:29
 
Fecha de Ingreso: diciembre-2009
Mensajes: 125
Antigüedad: 15 años
Puntos: 7
Pasar variable a ventana modal jquery

Hola buenas..

Estoy realizando una página en la que muestro un detalle del producto, pero para ver todas las imágenes del producto lanzo una ventana modal con jquery, pero el problema es que no soy capaz de pasarle la variable a la ventana modal para que me recupere la ruta de las imágenes, ya que la carpeta va en función de la id del producto..

Mediante un script de javascript sí he sido capaz de realizarlo, pero estaba probando con jquery ui y mi desconocimiento es bastaste alto..

Desearía una orientación de cómo pasar la variable ..

He buscado bastante y no he sido capaz de conseguirlo..

Muchas gracias de antemano...
  #2 (permalink)  
Antiguo 22/04/2012, 20:22
Avatar de Naahuel  
Fecha de Ingreso: marzo-2011
Ubicación: localhost
Mensajes: 796
Antigüedad: 13 años, 9 meses
Puntos: 192
Respuesta: Pasar variable a ventana modal jquery

Pues sin código de cómo estás realizando la ventana o tu enmarcado HTML, difícil poder ayudar.
__________________
nahueljose.com.ar
  #3 (permalink)  
Antiguo 23/04/2012, 02:04
 
Fecha de Ingreso: diciembre-2009
Mensajes: 125
Antigüedad: 15 años
Puntos: 7
Respuesta: Pasar variable a ventana modal jquery

Cita:
Iniciado por Naahuel Ver Mensaje
Pues sin código de cómo estás realizando la ventana o tu enmarcado HTML, difícil poder ayudar.
Perdona pero no estaba en el pc..Te la pongo ahora..

Código:
<script type="text/javascript">
		
		$(document).ready(function() {
		$('#dialog_link').click(function(){
		$('#imgprod').dialog('open');
						return false;
			});
				
				$('#imgprod').dialog({
					autoOpen: false,
					width: 500,
					height: 500,
					show: 'fade',
                   	hide: 'fade',
       				modal: true,
					buttons: {
						"Ok": function() {
							$(this).dialog("close");
						},
						"Cancel": function() {
							$(this).dialog("close");
						}
					}
					
				});
		
		
		});

</script>

Código HTML:
<a href="#" id="dialog_link" >Fotos</a> 
El enlace de fotos me abre la ventana modal del div (imgprod) y en ella quería recuperar la id del producto para mostrar todas las fotos de dicho producto. La imagen tiene una ruta con la carpeta correspondiente a dicha id y no la sé recuperar..

Muchas gracias de antemano..

Saludos
  #4 (permalink)  
Antiguo 23/04/2012, 04:54
Avatar de Naahuel  
Fecha de Ingreso: marzo-2011
Ubicación: localhost
Mensajes: 796
Antigüedad: 13 años, 9 meses
Puntos: 192
Respuesta: Pasar variable a ventana modal jquery

Creo comprender.

Estudiá este ejemplo:

Código HTML:
Ver original
  1. <!DOCTYPE html>
  2.     <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
  3.     <link rel="stylesheet" type="text/css" href="http://ajax.googleapis.com/ajax/libs/jqueryui/1/themes/base/jquery-ui.css" />
  4.     <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.16/jquery-ui.min.js"></script>
  5.     <script type="text/javascript">
  6.        
  7.         $(document).ready(function() {
  8.             //obtener el elemento contenedor del dialogo y
  9.             //guardarlo en una variable, ya que lo usamos con frecuencia
  10.             var $dialog_contenedor = $('#imgprod');
  11.            
  12.             //Usamos clases en lugar de id, la idea es tener muchos de estos
  13.             //elementos en la página
  14.             $('.dialog_link').click(function(evento){
  15.                 //el link que clickeamos tiene un atributo con
  16.                 //un ID de una galeria.
  17.                 var gallery_id = $(this).data('gid');
  18.                
  19.                 //con ese ID, obtenemos las fotos o hacemos lo que queramos
  20.                 //una vez que tengamos un resultado, lo ponemos como html del contenedor
  21.                 //del dialogo.
  22.                 //para ejemplificar, sólo lo muestro dentro del dialogo
  23.                 $dialog_contenedor.html('<p>'+ gallery_id +'</p>');
  24.                
  25.                 //para finalizar, abro el dialogo
  26.                 //Si se obtienen las fotos con AJAX, por ejemplo,
  27.                 //esta accion se debe realizar una vez que termine la petición
  28.                 $dialog_contenedor.dialog('open');
  29.                
  30.                 //evito la acción por defecto del enlace
  31.                 evento.preventDefault();
  32.             });
  33.            
  34.             //crear el dialogo
  35.             $dialog_contenedor.dialog({
  36.                 autoOpen: false,
  37.                 width: 500,
  38.                 height: 500,
  39.                 show: 'fade',
  40.                 hide: 'fade',
  41.                 modal: true,
  42.                 buttons: {
  43.                     "Cerrar": function() {
  44.                         $(this).dialog("close");
  45.                     }
  46.                 }
  47.                
  48.             });
  49.         });
  50.  
  51.  
  52.     <title></title>
  53. </head>
  54.    
  55.     <a href="#" class="dialog_link" data-gid="1">Fotos</a>
  56.     <a href="#" class="dialog_link" data-gid="2">Fotos</a>
  57.     <a href="#" class="dialog_link" data-gid="3">Fotos</a>
  58.    
  59.    
  60.     <div id="imgprod"></div>
  61. </body>
  62. </html>

Leé las notas que te puse en los comentarios del código.

Creo que es más correcto tener clases en lugar de ID's para los dialog_link, porque me imagino que el problema de antemano es que hay varios de esos en la página. Sino, no haría falta todo esto me imagino.

Modifico el ejemplo anterior para algo un poco más concreto:

Código HTML:
Ver original
  1. <!DOCTYPE html>
  2.     <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
  3.     <link rel="stylesheet" type="text/css" href="http://ajax.googleapis.com/ajax/libs/jqueryui/1/themes/base/jquery-ui.css" />
  4.     <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.16/jquery-ui.min.js"></script>
  5.     <script type="text/javascript">
  6.        
  7.         $(document).ready(function() {
  8.             //obtener el elemento contenedor del dialogo y
  9.             //guardarlo en una variable, ya que lo usamos con frecuencia
  10.             var $dialog_contenedor = $('#imgprod');
  11.            
  12.             //Usamos clases en lugar de id, la idea es tener muchos de estos
  13.             //elementos en la página
  14.             $('.dialog_link').click(function(evento){
  15.                 //el link que clickeamos tiene un atributo con
  16.                 //un ID de una galeria.
  17.                 var gallery_id = $(this).attr('data-gid');
  18.                
  19.                 //con ese ID, creamos un iframe que nos muestra
  20.                 //una galeria de Flickr.
  21.                 $dialog_contenedor.html('<iframe border="0" width="500" height="500" src="http://www.flickr.com/photos/diastema/sets/'+gallery_id+'/"></iframe>');
  22.                
  23.                 //para finalizar, abro el dialogo
  24.                 //Si se obtienen las fotos con AJAX, por ejemplo,
  25.                 //esta accion se debe realizar una vez que termine la petición
  26.                 $dialog_contenedor.dialog('open');
  27.                
  28.                 //evito la acción por defecto del enlace
  29.                 evento.preventDefault();
  30.             });
  31.            
  32.             //crear el dialogo
  33.             $dialog_contenedor.dialog({
  34.                 autoOpen: false,
  35.                 width: 500,
  36.                 height: 500,
  37.                 show: 'fade',
  38.                 hide: 'fade',
  39.                 modal: true,
  40.                 buttons: {
  41.                     "Cerrar": function() {
  42.                         $(this).dialog("close");
  43.                     }
  44.                 }
  45.                
  46.             });
  47.         });
  48.  
  49.  
  50.     <title></title>
  51. </head>
  52.    
  53.     <p><a href="#" class="dialog_link" data-gid="1037024">Toys</a></p>
  54.     <p><a href="#" class="dialog_link" data-gid="72157603448937963">The egg and i</a></p>
  55.     <p><a href="#" class="dialog_link" data-gid="72157600320979038">Scraps</a></p>
  56.    
  57.    
  58.     <div id="imgprod"></div>
  59. </body>
  60. </html>
__________________
nahueljose.com.ar
  #5 (permalink)  
Antiguo 23/04/2012, 05:02
Avatar de Naahuel  
Fecha de Ingreso: marzo-2011
Ubicación: localhost
Mensajes: 796
Antigüedad: 13 años, 9 meses
Puntos: 192
Respuesta: Pasar variable a ventana modal jquery

Importante:

Estuve teniendo problemas usando .data(), así que te diría que cambies:
Código Javascript:
Ver original
  1. var gallery_id = $(this).data('gid');

por:
Código Javascript:
Ver original
  1. var gallery_id = $(this).attr('data-gid');
__________________
nahueljose.com.ar
  #6 (permalink)  
Antiguo 23/04/2012, 06:00
 
Fecha de Ingreso: diciembre-2009
Mensajes: 125
Antigüedad: 15 años
Puntos: 7
Respuesta: Pasar variable a ventana modal jquery

Cita:
Iniciado por Naahuel Ver Mensaje
Importante:

Estuve teniendo problemas usando .data(), así que te diría que cambies:
Código Javascript:
Ver original
  1. var gallery_id = $(this).data('gid');

por:
Código Javascript:
Ver original
  1. var gallery_id = $(this).attr('data-gid');
Muchísimas gracias, no sabía como afrontar esto y ya lo acabo de conseguir.. Me ha salido perfecto lo que quería..

Otra última duda con este código rescato sólo una imagen, como haría para hacer una navegación de imágenes con todas las imágenes del producto? El equivalente a un do-while de php..

De nuevo, muchísimas gracias de antemano..
  #7 (permalink)  
Antiguo 23/04/2012, 06:23
Avatar de Naahuel  
Fecha de Ingreso: marzo-2011
Ubicación: localhost
Mensajes: 796
Antigüedad: 13 años, 9 meses
Puntos: 192
Respuesta: Pasar variable a ventana modal jquery

Y tendrías que crear una galería y usar algún plugin para que las muestre como querés.

Si eso es lo que querías hacer, por qué no usar:

FanyBox

ó

Colorbox
Como en este ejemplo: http://www.jacklmoore.com/colorbox/example1/
__________________
nahueljose.com.ar
  #8 (permalink)  
Antiguo 23/04/2012, 09:06
 
Fecha de Ingreso: diciembre-2009
Mensajes: 125
Antigüedad: 15 años
Puntos: 7
Respuesta: Pasar variable a ventana modal jquery

Cita:
Iniciado por Naahuel Ver Mensaje
Y tendrías que crear una galería y usar algún plugin para que las muestre como querés.

Si eso es lo que querías hacer, por qué no usar:

FanyBox

ó

Colorbox
Como en este ejemplo: http://www.jacklmoore.com/colorbox/example1/
Muchas gracias, lo he estado mirando por encima y me surge el mismo problema de cómo rescatar todas las imágenes del producto dinámicamente...

En el ejemplo que me pusiste no se puede ya que rescato la primera imagen rescatarla todas?? o es algo complicado y no tan sencillo como una galería en php?


Al menos he comprendido lo de meter variables..ya que estoy muy verde en jquery..

Muchas gracias por tu ayuda y a ver si puedo aclararme un poco los conceptos..
  #9 (permalink)  
Antiguo 23/04/2012, 15:09
 
Fecha de Ingreso: diciembre-2009
Mensajes: 125
Antigüedad: 15 años
Puntos: 7
Respuesta: Pasar variable a ventana modal jquery

Cita:
Iniciado por Naahuel Ver Mensaje
Y tendrías que crear una galería y usar algún plugin para que las muestre como querés.

Si eso es lo que querías hacer, por qué no usar:

FanyBox

ó

Colorbox
Como en este ejemplo: http://www.jacklmoore.com/colorbox/example1/
He conseguido hacer un bucle y que me muestre por colorbox las imágenes que tenga para cada producto. Muchas gracias.

El problema que me ha surgido ahora es que como en el ejemplo de colorbox me muestra un enlace para cada foto, y si tengo por ejemplo 15 imágenes de un producto me muestra 15 link ( como en el ejemplo ponen 3). Aquí viene la pregunta, ¿ como hago para mediante un boton que ponga "imágenes del producto" me recoga el bucle for sin mostrame un enlace para cada foto y me lo muestre en colorbox?


Muchas gracias de antemano..
  #10 (permalink)  
Antiguo 23/04/2012, 15:40
Avatar de Naahuel  
Fecha de Ingreso: marzo-2011
Ubicación: localhost
Mensajes: 796
Antigüedad: 13 años, 9 meses
Puntos: 192
Respuesta: Pasar variable a ventana modal jquery

Y podés poner sólo un link a la primera imagen... Listá todos los <a> en algún contenedor (<p> o <div>) dales una clase (además de la que usás para agrupar) y con CSS ocultá todos los que no quieras mostrar. Es la solución más rápida que se me ocurre.
__________________
nahueljose.com.ar

Etiquetas: modal, variables, ventanas
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 17:12.