Foros del Web » Programando para Internet » Jquery »

(jQuery) jQuery no me reconoce selectores de div cargados via ajax

Estas en el tema de (jQuery) jQuery no me reconoce selectores de div cargados via ajax en el foro de Jquery en Foros del Web. Hola gente... Soy muy nuevo con esto de JavaScript y todavia no me manejo bien con jQuery. El problema que tengo es el siguiente. al ...
  #1 (permalink)  
Antiguo 20/11/2008, 19:36
Avatar de [NiRVaNa]  
Fecha de Ingreso: abril-2004
Ubicación: Someplace In The Middle Of Nowhere!
Mensajes: 325
Antigüedad: 20 años, 7 meses
Puntos: 6
Pregunta (jQuery) jQuery no me reconoce selectores de div cargados via ajax

Hola gente...

Soy muy nuevo con esto de JavaScript y todavia no me manejo bien con jQuery.

El problema que tengo es el siguiente. al hacer un prueba sencilla de manejar un evento click de algun elemento, funciona correctamente si es parte de la pagina que se cargo inicialmente, pero... cuando cargo un div externo via ajax, dichos eventos no funcionan...

se entiende? Yo creo que es porque como inserta algo nuevo al html una vez que ya cargo lo demas, y como eso es nuevo, no se encuentra mapeado dentro del manejador... puede ser

Esta es mi funcion:
Código PHP:
$(document).ready(function() {

$(
"a").click(function() {
        
alert("Clickkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk");
    });

}); 
este es un ejemplo que hice para demostrar:
Código HTML:
<html>
<head>
<script type="text/javascript" src="jquery-1.2.6.min.js"></script>
<script type="text/javascript">
	$(document).ready(function() {
		$("#busqueda").submit(function() {
			$("#inline_results").fadeOut("slow");
			$("#loading").fadeIn("fast");
			loadClientesResults();
			return false;
		});
		
		function loadClientesResults() {
			$("#inline_results").load(
				'index.html',{},
				function() { 
					$("#loading").fadeOut("fast");
					$("#inline_results").fadeIn("slow");
				}
			);
		}
		
		$("a").click(function() {
			alert("Click madafaca");
		});
	});
</script></head>
<body style="background: #f0f;">
<form action="" method="post" id="busqueda"><fieldset>
<legend>Busqueda</legend>
<a href="#">soy un link</a>
<input type="submit" value="cargar"/>
</fieldset></form></div>
<div id="loading" style="display: none; background: #ff0;">REALIZANDO BUSQUEDA</div>
<br/>
<div id="inline_results">fdgdfgdfgdfgdfg</div>
</div>
</body>
</html> 
Tengo varios links en mi pagina, en todos funciona al hacer click, y uso un buscador, que carga los resultados en un div... los links que contiene ese div que se cargo no son reconocidos por el evento..

Si es que hace falta adjunto lo demas... ya que estoy trabajando con capas y es mucho codigo, que no creo que sea el origen del problema...

Espero que me puedan ayudar... Gracias..
__________________
"Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua."

Última edición por [NiRVaNa]; 20/11/2008 a las 19:56
  #2 (permalink)  
Antiguo 20/11/2008, 23:16
Avatar de stock  
Fecha de Ingreso: junio-2004
Ubicación: Monterrey NL
Mensajes: 2.390
Antigüedad: 20 años, 4 meses
Puntos: 53
Respuesta: (jQuery) jQuery no me reconoce selectores de div cargados via ajax

en efecto, no funcionan porque son nuevos links, por lo tanto necesitas agregarles un listener a cada uno de ellos para que respondan al evento click:

Código PHP:
function loadClientesResults() {
            $(
"#inline_results").load(
                
'index.html',{},
                function() { 
                    $(
"#loading").fadeOut("fast");
                    $(
"#inline_results").fadeIn("slow");
///////////////////////////////////////
// Justo aqui necesitas agregarle el evento click a tus nuevos links
//////////////////////////////////////
                
}
            );
        } 
para agregar el click es igual, la única diferencia es que solo se lo agregas a los nuevos links ;)

Código PHP:
$("#inline_results a").click(function() {
    
alert("Click madafaca");
}); 
saludos
  #3 (permalink)  
Antiguo 21/11/2008, 03:32
 
Fecha de Ingreso: junio-2004
Mensajes: 266
Antigüedad: 20 años, 5 meses
Puntos: 8
Respuesta: (jQuery) jQuery no me reconoce selectores de div cargados via ajax

Puedes aplicar funciones a cualquier etiqueta, ya venga de AJAX o no usando este plugin:

http://brandonaaron.net/docs/livequery/
__________________
WebSenior
  #4 (permalink)  
Antiguo 25/03/2010, 11:02
 
Fecha de Ingreso: noviembre-2009
Mensajes: 3
Antigüedad: 15 años
Puntos: 0
Respuesta: (jQuery) jQuery no me reconoce selectores de div cargados via ajax

Yo tengo el mismp problema pero con formularios cargados via ajax con jquery, si tienen un ejemplo con formularios por favor diganme donde encuentro ejemplos con formularios y ese livequery
  #5 (permalink)  
Antiguo 25/03/2010, 13:10
 
Fecha de Ingreso: diciembre-2009
Ubicación: Misiones
Mensajes: 867
Antigüedad: 14 años, 11 meses
Puntos: 65
Respuesta: (jQuery) jQuery no me reconoce selectores de div cargados via ajax

jquery no maneja eventos en elementos creados dinamicamento en un futuro con append, prepend, etc y tampoco con ajax. Pero para eso está el evento live.

Esto NO funciona:
Código PHP:
<html>
<
head>
    <
title>Prueba</title>
    <
script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js" type="text/javascript"></script>
    <script type="text/javascript">
    $(function(){
        
        $('a').click( function (){
            alert ( $(this).text() );
        });
        $('body').append('<a href="#">No funciona</a>')
    });
    </script>
</head>
<body>
    <a href="#">Funciona</a>
</body>
</html> 
Esto SI funciona:
Código HTML:
<html>
<head>
    <title>Prueba</title>
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js" type="text/javascript"></script>
    <script type="text/javascript">
    $(function(){
        
        $('a').live('click', function (){
            alert ( $(this).text() );
        });
        $('body').append('<a href="#">No funciona</a>')
    });
    </script>
</head>
<body>
    <a href="#">Funciona</a>
</body>
</html> 
El primer ejemplo que no funciona si cambian append antes del evento click va a funcionar

Por ajax si tienen una pagina que se llama pagina.html con un link
Código HTML:
<a href="#">link</a> 
y llaman a esa página y con un evento click NO funciona
Código HTML:
<html>
<head>
    <title>Prueba</title>
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js" type="text/javascript"></script>
    <script type="text/javascript">
    $(function(){
        $('body').load("pagina.html");
        
        $('a').click( function (){
            alert ( $(this).text() );
        });
        
    });
    </script>
</head>
<body>

</body>
</html> 

Pero esto con evento live SI funciona
Código HTML:
<html>
<head>
    <title>Prueba</title>
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js" type="text/javascript"></script>
    <script type="text/javascript">
    $(function(){
        $('body').load("pagina.html");
        
        $('a').live('click', function (){
            alert ( $(this).text() );
        });
        
    });
    </script>
</head>
<body>

</body>
</html> 
  #6 (permalink)  
Antiguo 14/05/2010, 15:59
 
Fecha de Ingreso: junio-2006
Mensajes: 13
Antigüedad: 18 años, 5 meses
Puntos: 1
Respuesta: (jQuery) jQuery no me reconoce selectores de div cargados via ajax

Cita:
Iniciado por sebastiancb Ver Mensaje
Yo tengo el mismp problema pero con formularios cargados via ajax con jquery, si tienen un ejemplo con formularios por favor diganme donde encuentro ejemplos con formularios y ese livequery
Si por favor, un ejemplo me estoy volviendo loco con esto . Pleaseeee
  #7 (permalink)  
Antiguo 14/05/2010, 17:14
Avatar de mayid
Colaborador
 
Fecha de Ingreso: marzo-2009
Ubicación: BsAs
Mensajes: 4.014
Antigüedad: 15 años, 7 meses
Puntos: 101
Respuesta: (jQuery) jQuery no me reconoce selectores de div cargados via ajax

No se si les sea util, pero estas usando plugins especificos para manejo de formularios?

Este por ejemplo:
http://jquery.malsup.com/form/
http://jquery.malsup.com/form/#ajaxForm
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

SíEste tema le ha gustado a 1 personas




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