Foros del Web » Programando para Internet » Javascript » Frameworks JS »

live() sin eventos

Estas en el tema de live() sin eventos en el foro de Frameworks JS en Foros del Web. Hola. No sé si esta pregunta es muy tonta, pero ¿se puede usar una función live() sin asignar un evento? La cosa es para cuando ...
  #1 (permalink)  
Antiguo 12/07/2010, 06:30
Avatar de mariogl84  
Fecha de Ingreso: noviembre-2002
Ubicación: Barcelona
Mensajes: 433
Antigüedad: 20 años
Puntos: 20
live() sin eventos

Hola. No sé si esta pregunta es muy tonta, pero ¿se puede usar una función live() sin asignar un evento? La cosa es para cuando hacemos cosas así:

$("#mi_elemento").funcion();

Si el elemento ha sido añadido al DOM dinámicamente, no funciona.

Fijaos que no estoy asignando ningún evento. ¿Es posible usar live() o algo así?

Gracias.
  #2 (permalink)  
Antiguo 12/07/2010, 14:09
Avatar de mayid
Colaborador
 
Fecha de Ingreso: marzo-2009
Ubicación: BsAs
Mensajes: 4.014
Antigüedad: 13 años, 8 meses
Puntos: 101
Respuesta: live() sin eventos

Y que representa funcion() en el mundo real? Un plugin?

Me parece que vas a tener que escribir vos el codigo. Como estas cargando lo nuevo? Usa el callback para asignar funcionalidad al contenido nuevo.

Publica lo que tengas. Un caso real.
  #3 (permalink)  
Antiguo 14/07/2010, 04:06
Avatar de mariogl84  
Fecha de Ingreso: noviembre-2002
Ubicación: Barcelona
Mensajes: 433
Antigüedad: 20 años
Puntos: 20
Respuesta: live() sin eventos

Sí, un plugin. Por ejemplo, el lightbox de jQuery para ampliar fotos. Para hacer que una foto sea ampliable, la meto en un <a class="ampliable"> y se lo asigno a ese <a>:

$('a.ampliable').lightBox();

Si creara un nuevo <a> dinámicamente, por ejemplo, mediante el método .after() de jQuery, ¿cómo podría asignarle el lightBox()?

Con lo del callback me pierdo...

Gracias.
  #4 (permalink)  
Antiguo 14/07/2010, 09:12
Avatar de mayid
Colaborador
 
Fecha de Ingreso: marzo-2009
Ubicación: BsAs
Mensajes: 4.014
Antigüedad: 13 años, 8 meses
Puntos: 101
Respuesta: live() sin eventos

Callback es el momento en que la carga de contenidos vía ajax está completada.

Ej:
$("#algo").load("llamada.php",{envio:tal}, function(respuesta) { alert (respuesta) ; });

En ese caso estás enviando un parametro al lado servidor y esperar que el servidor te devuelva algo. Que vas a poder recibir en el callback, desde el parametro "respuesta".

Entonces, cuando cargues tu nuevo contenido, podes hacer:

$("div#nuevocontenido a").lightBox();

Es decir, adjudicar el lightbox a todos los links del div "nuevocontenido".
  #5 (permalink)  
Antiguo 16/07/2010, 03:38
Avatar de mariogl84  
Fecha de Ingreso: noviembre-2002
Ubicación: Barcelona
Mensajes: 433
Antigüedad: 20 años
Puntos: 20
Respuesta: live() sin eventos

Sí, pero no creo los elementos vía AJAX, sino con métodos como .after().

Por ejemplo:

$("#boton").click(function() {
var html = "<a class='ampliable'><img src="ejemplo.jpg" /></a>";
$("#ultima_imagen").after(html);
});

$("a.ampliable").lightBox();

Gracias.
  #6 (permalink)  
Antiguo 16/07/2010, 09:04
Avatar de mayid
Colaborador
 
Fecha de Ingreso: marzo-2009
Ubicación: BsAs
Mensajes: 4.014
Antigüedad: 13 años, 8 meses
Puntos: 101
Respuesta: live() sin eventos

Y por que no le asignas el lightbox depués de crearlo?
Cita:
$("#ultima_imagen").after(html);
$("#ultima_imagen").lightBox();
  #7 (permalink)  
Antiguo 16/07/2010, 09:09
Avatar de mariogl84  
Fecha de Ingreso: noviembre-2002
Ubicación: Barcelona
Mensajes: 433
Antigüedad: 20 años
Puntos: 20
Respuesta: live() sin eventos

Bueno, es que puse ese ejemplo para simplificar, pero en realidad llamo al plugin con parámetros de configuración, entonces no es una sola línea, sino varias.

Código Javascript:
Ver original
  1. $("#form_art input.color").ColorPicker({
  2.     eventName: 'focus',
  3.     onSubmit: function(hsb, hex, rgb, el) {
  4.         $(el).val("#" + hex);
  5.         $(el).ColorPickerHide();
  6.         $(el).css({ "background-color": "#" + hex});
  7.     },
  8.     onBeforeShow: function() {
  9.         $(this).ColorPickerSetColor(this.value);
  10.     }
  11. });

Era por si es posible no tener que repetir tanto código, pero si es la única manera, pues así será.

¡Gracias!
  #8 (permalink)  
Antiguo 16/07/2010, 13:40
Avatar de mayid
Colaborador
 
Fecha de Ingreso: marzo-2009
Ubicación: BsAs
Mensajes: 4.014
Antigüedad: 13 años, 8 meses
Puntos: 101
Respuesta: live() sin eventos

A veces los plugin te permiten definir las opciones aparte del llamado. ASí podés hacer muchos llamados con un mismo set de opciones. Fijate en la pagina del autor si es posible hacerlo. Y si no, no creo que sea dificil hacerle esa implementación.
  #9 (permalink)  
Antiguo 21/07/2010, 09:01
Avatar de mariogl84  
Fecha de Ingreso: noviembre-2002
Ubicación: Barcelona
Mensajes: 433
Antigüedad: 20 años
Puntos: 20
Respuesta: live() sin eventos

Vale, buscaré acerca de eso. Gracias por la ayuda, mayid.

Etiquetas: eventos, live
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 18:56.