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

No me reconoce las funciones, $(document).ready

Estas en el tema de No me reconoce las funciones, $(document).ready en el foro de Frameworks JS en Foros del Web. Hola, tengo el siguiente archivo js: Código: $(document).ready ( function() { pokemons_equipados = $('.pokemon_equipado').length; alert(pokemons_equipados); /*---- Arrojar objeto ----*/ function AccionArrojar(objeto_id) { $("#bloque_carga").show(); $(".carga").attr({disabled: "disabled"}); ...
  #1 (permalink)  
Antiguo 18/03/2010, 13:28
 
Fecha de Ingreso: septiembre-2005
Ubicación: Valencia
Mensajes: 738
Antigüedad: 18 años, 6 meses
Puntos: 5
Pregunta No me reconoce las funciones, $(document).ready

Hola, tengo el siguiente archivo js:

Código:
$(document).ready ( function()
{
	pokemons_equipados = $('.pokemon_equipado').length;
	alert(pokemons_equipados);

	/*----
		Arrojar objeto
	----*/
	function AccionArrojar(objeto_id)
	{
		$("#bloque_carga").show();
		$(".carga").attr({disabled: "disabled"});

		xajax_AccionArrojar(objeto_id);
	}
})
Este archivo js lo añado en el <head> de la pagina y el alert funciona, hasta hay todo bien, pero tengo un boton en mi body que al hacerle click, usa la funcion AccionArrojar, pues bien, firefox me dice que la funcion no existe...

He probado quitandole el $(document).ready y entonces si me encuentra la funcion

¿Que hago mal?

Gracias
__________________
http://www.pkmrpg.es
  #2 (permalink)  
Antiguo 18/03/2010, 13:49
Avatar de mayid
Colaborador
 
Fecha de Ingreso: marzo-2009
Ubicación: BsAs
Mensajes: 4.014
Antigüedad: 15 años
Puntos: 101
Respuesta: No me reconoce las funciones, $(document).ready

No se por que pasa, pero si te funciona afuera, dejala afuera. No veo razón para declarar esa funcion dentro del ready.
  #3 (permalink)  
Antiguo 18/03/2010, 13:57
 
Fecha de Ingreso: septiembre-2005
Ubicación: Valencia
Mensajes: 738
Antigüedad: 18 años, 6 meses
Puntos: 5
Respuesta: No me reconoce las funciones, $(document).ready

Las declaracion de funciones deberia declararlas fuera del ready? osea no tocan el DOM hasta que se ejecutan

¿Deberia poner el $(document).ready dentro de cada funcion? ¿Por si el usuario pulsara un boton que utiliza una funcion antesde que se cargara la pagina?

gracias!
__________________
http://www.pkmrpg.es
  #4 (permalink)  
Antiguo 18/03/2010, 14:19
 
Fecha de Ingreso: junio-2008
Ubicación: Capital Federal xD
Mensajes: 1.208
Antigüedad: 15 años, 9 meses
Puntos: 35
Respuesta: No me reconoce las funciones, $(document).ready

A ver, ¿tienes definido la ruta de la libreria jquery correctamente antes de dicho codigo?
Si estas usando jquery te conviene hacer uso de ella para ligar el boton a dicha función.
Código PHP:
$("#boton1").bind("click", function(e){
    $(
"#bloque_carga").show();
    $(
".carga").attr({disabled"disabled"});
    
xajax_AccionArrojar(objeto_id);

    }); 
__________________
I am Doyle please insert code.
  #5 (permalink)  
Antiguo 18/03/2010, 14:33
Avatar de mayid
Colaborador
 
Fecha de Ingreso: marzo-2009
Ubicación: BsAs
Mensajes: 4.014
Antigüedad: 15 años
Puntos: 101
Respuesta: No me reconoce las funciones, $(document).ready

La manera que vos comentaste al principio es buena. Deja esa función afuera. Diferente sería si tuvieras que modificar algo del DOm. Pero vos no lo hacés en un principio.

Cita:
¿Deberia poner el $(document).ready dentro de cada funcion?
Dentro? Nunca.

Cita:
¿Por si el usuario pulsara un boton que utiliza una funcion antesde que se cargara la pagina?
No creo que eso sea posible. Ademas vos no estas asignando una funcionalidad desde el <head>. O al menos no es así en el codigo que publicaste. Usas eventos inline? Quiero decir: vos mostraste una funcion, pero no el llamado a esa función.

Otra cosa: ready es DOM-ready. Que la pagina tarde en cargar no significa que el dom no esté ya cargado. Las imagenes, por ejemplo, tardan lo que el texto no tarda... y CREO que lo que aparece en pantalla aparece recién luego de construirse el DOM. Alguien sabe si es así?
  #6 (permalink)  
Antiguo 19/03/2010, 18:00
 
Fecha de Ingreso: diciembre-2009
Ubicación: Misiones
Mensajes: 867
Antigüedad: 14 años, 3 meses
Puntos: 65
Respuesta: No me reconoce las funciones, $(document).ready

no te va a reconocer porque es una función que está dentro de la función de callback de ready, si o si lo tenes que llamar dentro del callback
si está afuera si podes llamarlo desde quealquier lado
  #7 (permalink)  
Antiguo 19/03/2010, 18:54
Avatar de juaniquillo
Colaborador
 
Fecha de Ingreso: noviembre-2005
Ubicación: San Juan, Puerto Rico
Mensajes: 5.745
Antigüedad: 18 años, 4 meses
Puntos: 281
Respuesta: No me reconoce las funciones, $(document).ready

es tan fácil como darse cuenta de lo que ready() hace. $(document).ready() se llama cuando el DOM ha sido cargado. Si lo que quieres inter-actuar con el DOM lo mejor es ponerlo dentro de esa función o ponerlo antes de el cierre de la etiqueta </body> (si, no hay nada malo con eso). Si vas a declarar una función no es necesario ponerlo dentro del ready(), Lo que necesitas poner dentro del ready() es cuando llamas esa función. Aunque se puede declarar una función si se va a usar una vez el DOM se ha cargado. Por favor alguien confirmen si estoy bien o es mi imaginación.

*Editar Cuando digo que por favor me confirmen lo digo en serio. Hoy es viernes y los que me siguen en twitter saben que yo a esta hora me he bebido algunas copas de vino
__________________
Por fin.. tengo algo parecido a un blog
Y por lo visto ya estoy escribiendo...

Última edición por juaniquillo; 19/03/2010 a las 19:13
  #8 (permalink)  
Antiguo 19/03/2010, 19:24
 
Fecha de Ingreso: diciembre-2009
Ubicación: Misiones
Mensajes: 867
Antigüedad: 14 años, 3 meses
Puntos: 65
Respuesta: No me reconoce las funciones, $(document).ready

el problema que tiene astut no tiene nada que ver con jquery, con ready ni con el dom, es netamente de javasript

No se puede llamar a una función que está dentro de una función desde afuera de la misma, o sea funciones anidadas, se la puede llamar solamente dentro de la función que la contiene.

Como el sieguiente ejemplo que quiero llamar a la función AccionArrojar() cuando hacen clic en el enlace, pero me da error de que no ha sido definida porque está dentro de la función ready()

Código HTML:
<html>
    <head>
        <title>Ejemplo</title>
        <script type="text/javascript">
        function ready (){
            function AccionArrojar (){
                alert("hola");
            }
        }
        </script>
    </head>
    <body>
        <a href="#" onclick="AccionArrojar()">Función indefinida</a>
    </body>
</html> 
astut esta llamando a una función que está en otra función y eso no es posible porque lo hace desde afuera de la función que la contiene


le va a funcionar cuando hace con un evento click porque va a estar dentro de ready, si quiere usar el oncklic inline que saque la función afuera
  #9 (permalink)  
Antiguo 19/03/2010, 20:01
Avatar de mayid
Colaborador
 
Fecha de Ingreso: marzo-2009
Ubicación: BsAs
Mensajes: 4.014
Antigüedad: 15 años
Puntos: 101
Respuesta: No me reconoce las funciones, $(document).ready

Perfectamente explicado Dany. Gracias.

Juaniquillo: lo que decís está bien:
Cita:
o ponerlo antes de el cierre de la etiqueta </body>
Cita:
Lo que necesitas poner dentro del ready() es cuando llamas esa función.
En fin, el tema era el que conceptualizó Dany. Al menos a mi me queda perfectamente claro (tenía una nube con respecto a esto, que me ha pasado a veces).

Etiquetas: funciones, reconoce
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 12:42.