Foros del Web » Programando para Internet » Jquery »

DEspues de .html() no detecta funcion incluida dentro JQUERY

Estas en el tema de DEspues de .html() no detecta funcion incluida dentro JQUERY en el foro de Jquery en Foros del Web. Buenas ... necesito su ayuda .. mediante un click en un icono ,.. dentro de un formulario genero mediante .html ('') un campo input type:file ...
  #1 (permalink)  
Antiguo 01/08/2012, 14:52
Avatar de jakuam  
Fecha de Ingreso: abril-2007
Mensajes: 354
Antigüedad: 17 años, 7 meses
Puntos: 0
DEspues de .html() no detecta funcion incluida dentro JQUERY

Buenas ... necesito su ayuda .. mediante un click en un icono ,.. dentro de un formulario genero mediante .html ('') un campo input type:file ... este tipo de imput tiene a su ves asiganada un funcion con evento click () pero no funciona esta ultima. .. y no se como hacer .. e probado todo ! .. y no me reconoce la funcion click () que si funciona si coloco el input de una sin hacer el html() ...

ayuda? .. les dejo un codigo ejemplificativo ..



Código:
 <script >

$(document).ready(function(){ 

// evento click que realiza el .html() 
$('.edit').click ( function() {
 event.preventDefault();
 
var id_f =$(this).attr('rel');

$("#bfoto1").html('<div id="afoto1" align="center"><div class="inputButton"><label><input name="foto1" type="file" class="file"  id="foto1" rel="1"/></label><div>Seleccione Imagen..<br />Click Aqui.. </div></div></div>');
  });
  

// evento al hacer click en el input (este no lo reconoce ..) 
 $('input:file').click (function (){
	 var id_foto = $(this).attr('id')
	  var num_img = $(this).attr('rel')
	  alert (id_foto+' - '+num_img)
    $("#"+id_foto).live('change', function()
{
	
	$('#a'+id_foto+" div.inputButton").css({display:'none'});
	$('#a'+id_foto).append('<div class="carga"><img src="loader.gif" alt="Uploading…." width="50" height="50"/></div> ') 
	$("#imageload").ajaxForm(
{
	data: {img:num_img},
	target:'#b'+id_foto,


}).submit();
	
	
	});
	});
 </script >
Código HTML:
<form id="imageload" name="imageload" method="post" enctype="multipart/form-data" action="act_fotos.php"> <div id="fotos_alojar"><ul class=" fotos  "><li id="bfoto1">
           <ul class="mini-menu">
            <li class="edit" rel="1"><a href="#" title="Modificar Imagen"><img src="http://www.forosdelweb.com/f127/interface/images/icons/fugue/pencil.png" width="16" height="16"> Editar</a></li>
        </ul>
          <img src="http://www.forosdelweb.com/f127/fotos/<?php echo $row_alojamiento['alojar_id']; ?>_1.jpg"  />
         
        </li>

...
....
</ul>
</form> 
__________________
Jakuam
Reserva Hoteles Online
Turismo San Rafael Mendoza
  #2 (permalink)  
Antiguo 01/08/2012, 16:08
Avatar de Dradi7  
Fecha de Ingreso: junio-2008
Ubicación: Peru - Lima
Mensajes: 1.518
Antigüedad: 16 años, 5 meses
Puntos: 220
Respuesta: DEspues de .html() no detecta funcion incluida dentro JQUERY

Bueno en el codigo que has puesto no veo el html del input, y porque no pruebas usando el ID de tu HTMLElement File
__________________
La clave de todo triunfador es eliminar todas sus excusas y sus limitaciones
  #3 (permalink)  
Antiguo 01/08/2012, 16:30
Avatar de jakuam  
Fecha de Ingreso: abril-2007
Mensajes: 354
Antigüedad: 17 años, 7 meses
Puntos: 0
Respuesta: DEspues de .html() no detecta funcion incluida dentro JQUERY

dradi7 .. no esta el input en el html por lo genero al hacer click en el icono EDIT .. mediante jquery con html() --- ahi funciona ..

el problema que al hacer click a este input no se ejecuta la funcion $('input:file').click y su contenido .. y no se por que .. probe esta funcion poniendo un input en el html y funciona .. pero necesito generarlo al presionar EDIT

espero su ayuda
__________________
Jakuam
Reserva Hoteles Online
Turismo San Rafael Mendoza
  #4 (permalink)  
Antiguo 01/08/2012, 16:51
Avatar de Dradi7  
Fecha de Ingreso: junio-2008
Ubicación: Peru - Lima
Mensajes: 1.518
Antigüedad: 16 años, 5 meses
Puntos: 220
Respuesta: DEspues de .html() no detecta funcion incluida dentro JQUERY

pero prueba con el id del input a mi me funciona correctamente
__________________
La clave de todo triunfador es eliminar todas sus excusas y sus limitaciones
  #5 (permalink)  
Antiguo 02/08/2012, 08:31
Avatar de jakuam  
Fecha de Ingreso: abril-2007
Mensajes: 354
Antigüedad: 17 años, 7 meses
Puntos: 0
Respuesta: DEspues de .html() no detecta funcion incluida dentro JQUERY

dradi7 .. no funciona con el id tanpoco osea cambie $('input:file').click por $('#foto1').click y no hay caso ... igual no puedo hacer esto ya que son varios input con distintos ids .. igualmetne no me funciono .. saludos
__________________
Jakuam
Reserva Hoteles Online
Turismo San Rafael Mendoza
  #6 (permalink)  
Antiguo 02/08/2012, 08:47
Avatar de fleandro  
Fecha de Ingreso: junio-2012
Ubicación: Cali (Valle del cauca)
Mensajes: 18
Antigüedad: 12 años, 4 meses
Puntos: 0
Respuesta: DEspues de .html() no detecta funcion incluida dentro JQUERY

Hola Jakuam te falta cerrar la llave de
Código:
$(document).ready(function(){
  #7 (permalink)  
Antiguo 02/08/2012, 09:54
Avatar de jakuam  
Fecha de Ingreso: abril-2007
Mensajes: 354
Antigüedad: 17 años, 7 meses
Puntos: 0
Respuesta: DEspues de .html() no detecta funcion incluida dentro JQUERY

Fleandro .. como estas en mi codigo lo tengo bien .. esta cerrado mediante otro }); .. aca en el ejemplo lo puse mal .. igualmente ami no me funciona ..

haber hice algunas pruebas ... mi consulta es la siguiente .. si el elemento q esta vinculado a la funcion no esta de entrada cuando carga la maquina .. ejemplo crear elementos como div , a, img desde jquery mediante html append , etc .. y este elemento creado como dije esta asociodo a un evento jquery como Click, focus, etc .. FUNCION ESTE EVENTO ???

por eso es lo que me esta pasando al generar dinamicamente el elemento crea luego sera tomado cmo selector de una funcion Jquery ya definida .. ESTA NO FUNCIONA sobre ese elemento creado dinamicamente pero si sobre los que esta de forma estatica ...


espero su ayuda
__________________
Jakuam
Reserva Hoteles Online
Turismo San Rafael Mendoza
  #8 (permalink)  
Antiguo 02/08/2012, 10:09
Avatar de Dradi7  
Fecha de Ingreso: junio-2008
Ubicación: Peru - Lima
Mensajes: 1.518
Antigüedad: 16 años, 5 meses
Puntos: 220
Respuesta: DEspues de .html() no detecta funcion incluida dentro JQUERY

Mira no me había puesto ha analizar tu código, error mio.

Expliquemos tu código no funciona por lo siguiente al hacer tu el $(document).ready(function(){...}); empiezas generando los siguientes eventos

$('.edit').click (function() {...});
$('input:file').click (function (){...});

Recordando el document.ready se ejecuta una vez la pagina esta cargada, entonces:

- empieza a generar el evento click del elemento Edit, busca el elemento en la pagina lo encuentra y genera el evento, hasta aca todo OK
- empieza a generar el evento click del elemento Input File, busca el elemento en la pagina pero no lo encuentra ¿Porque? esto es porque justo tu elemento Input File se agrega a la pagina cuando hago click en el elemento edit, es por esto que nunca funciona este código

La Solución

agrega toda las lineas del $('input:file').click (function (){...}); dentro del $('.edit').click (function() {...}); luego de haber generado o creado el input fle en la pagina con esto ya va a poder encontrar el input file y asignarle su respectivo evento
__________________
La clave de todo triunfador es eliminar todas sus excusas y sus limitaciones

Última edición por Dradi7; 02/08/2012 a las 10:17
  #9 (permalink)  
Antiguo 02/08/2012, 10:39
Avatar de fleandro  
Fecha de Ingreso: junio-2012
Ubicación: Cali (Valle del cauca)
Mensajes: 18
Antigüedad: 12 años, 4 meses
Puntos: 0
Respuesta: DEspues de .html() no detecta funcion incluida dentro JQUERY

Bueno la solucion del compañero Dradi7 es muy valida. Pero respondiendo la ultima pregunta de Jakuam te cuento que despues de leer un poco encontre que los eventos(click, focus, blur, etc,) solo aplican a los elementos del DOM existentes al momento de renderizar la pagina,en este caso para asociar el evento en cualquier momento tienes que utilizar el evento live de la sgte manera:

reemplazas:
Código HTML:
$('input:file').click (function (){
por este:

Código HTML:
$('input').live('click', function() {
.
Espero que ambas te puedan servir.
  #10 (permalink)  
Antiguo 02/08/2012, 10:46
Avatar de Dradi7  
Fecha de Ingreso: junio-2008
Ubicación: Peru - Lima
Mensajes: 1.518
Antigüedad: 16 años, 5 meses
Puntos: 220
Respuesta: DEspues de .html() no detecta funcion incluida dentro JQUERY

Cita:
Iniciado por fleandro Ver Mensaje
Bueno la solucion del compañero Dradi7 es muy valida. Pero respondiendo la ultima pregunta de Jakuam te cuento que despues de leer un poco encontre que los eventos(click, focus, blur, etc,) solo aplican a los elementos del DOM existentes al momento de renderizar la pagina,en este caso para asociar el evento en cualquier momento tienes que utilizar el evento live de la sgte manera:

reemplazas:
Código HTML:
$('input:file').click (function (){
por este:

Código HTML:
$('input').live('click', function() {
.
Espero que ambas te puedan servir.
fleandro si lees bien la documentacion de JQuery el evento live ya esta deprecado para mejor uso puede usar el on que es mucho mejor.
__________________
La clave de todo triunfador es eliminar todas sus excusas y sus limitaciones
  #11 (permalink)  
Antiguo 02/08/2012, 13:11
Avatar de fleandro  
Fecha de Ingreso: junio-2012
Ubicación: Cali (Valle del cauca)
Mensajes: 18
Antigüedad: 12 años, 4 meses
Puntos: 0
Respuesta: DEspues de .html() no detecta funcion incluida dentro JQUERY

Gracias Dradi7 voy a leer la documentación
  #12 (permalink)  
Antiguo 03/08/2012, 07:09
Avatar de jakuam  
Fecha de Ingreso: abril-2007
Mensajes: 354
Antigüedad: 17 años, 7 meses
Puntos: 0
Respuesta: DEspues de .html() no detecta funcion incluida dentro JQUERY

chicos como estan logre solucionarlo ayer ... tal cual como dice Dradi7 y Fleandro los evento asociados al un elemento son los que se cargan con la pagina y recorre el DOM .. cuando se crea estos elemento de forma dinamica los evento no los consideran parte del DOM .. por eso hay eventos que recorren el DOM como bind, live, delegate y on ... les dejo un link todo detallado de esto un saludo y muchas Gracias ...

LINK A SOLUCION >>
__________________
Jakuam
Reserva Hoteles Online
Turismo San Rafael Mendoza

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 13:11.