Ver Mensaje Individual
  #3 (permalink)  
Antiguo 27/05/2012, 15:46
Avatar de marlanga
marlanga
 
Fecha de Ingreso: enero-2011
Ubicación: Murcia
Mensajes: 905
Antigüedad: 3 años, 7 meses
Puntos: 178
Respuesta: eventos en javascript

Vamos a ver...
Esas funciones son conocidas como "funciones anónimas".
Por ejemplo:

Código Javascript:
Ver original
  1. var sumar = function (a,b){
  2. return a+b;
  3. }

Luego, en otra parte del código, puerdo hacer:
Código Javascript:
Ver original
  1. alert(sumar(3,10));
Y me pintará en un alert el número 13.

"Sumar" es una función anónima. Yo sé que en el programa se usará para sumar dos números, asi que declaro una función anónima "atada" a una variable llamada sumar, que recibe 2 argumentos (el nombre que tengan esos argumentos, no importa) y los devuelve sumados.

En JAVASCRIPT nativo, por ejemplo, las funciones anónimas son típicas para manejar los eventos de teclado y ratón. Por ejemplo:

Código Javascript:
Ver original
  1. function mi_funcion_de_manejo_raton(evento_de_raton){
  2. alert(evento_de_raton.pageX + " " + evento_de_raton.pageY);
  3. }
  4.  
  5. var capa= document.getElementById("mi_div");
  6. capa.onclick=mi_funcion_de_manejo_raton(evt);


O su forma resumida:
Código Javascript:
Ver original
  1. var capa= document.getElementById("mi_div");
  2. capa.onclick=function(evento_de_raton){
  3. alert(evento_de_raton.pageX + " " + evento_de_raton.pageY);
  4. }

Mirando la documentaciónde JAVASCRIPT, vemos que podemos redeclarar la función "onclick" de todos los elementos que capturemos del DOM de la página. Dicha función puede recoger 1 argumento, que es el evento con los datos del ratón en el instante que se disparó dicho evento. Para declarar mi función anónima, puedo llamar a ese argumento con el nombre que me de la gana. Sólo me importa saber que es del tipo EVENT, asi que le saco la información que me interesa (las coordenadas del ratón).

Vamos a ver lo que hace JQUERY.

Lo que hace JQUERY es llamar a una función anónima, función que tienes que declarar tú.
Por ejemplo, en LOAD se utiliza así:

Código Javascript:
Ver original
  1. $.post("pagina.php", function(response, status, xhr) { });
Imagina que esa función está programada de una forma parecida ésta, en pseudo código:
Código Javascript:
Ver original
  1. jQuery-function load(pagina_destino,funcion_success){
  2. var datos = cargar_pagina(pagina_destino);
  3. if (funcion_success==undefined) funcion_success = function (a,b,c) { };
  4. datos.cuandopaginaCargada = funcion_success(datos.texto, datos.estado, datos.error);
  5. }

Como ves, cuando la función del CORE de jQuery cargue una página, llamará a la función anónima que tú le has pasado en uno de los argumentos (aunque primero comprueba si le has pasado ese argumento; en caso contrario, crea una función anónima que no hace nada, para que luego no de error).
Como ves, lo único que necesitas saber es qué argumentos incluirá jQuery para llamar a tu función anónima, algo que por supuesto, viene en la documentación. El nombre no importa, tú en tu función anónima puedes llamar a los argumentos como quieras. Lo que te interesa saber es su número, y qué tipo de dato tiene cada uno.

Volvamos a
Código Javascript:
Ver original
  1. $.post("pagina.php", function(response, status, xhr) { });
function(response, status, xhr) { } es la función anínima que tienes que declarar tú. Sabes, con la documentación, que recibe 3 parámetros. El primero es el texto que recibe como respuesta la petición AJAX. El segundo, es el código de STATUS (200) quiere decir que hubo éxito en la petición al servidor. Y el tercero, es el objeto XmlHttpRequest que hizo la llamada AJAX. Tú lo has llamado RESPONSE, STATUS y XHR. Pero podías haberlos llamado TEXTO, ERROR y OBJ, y funcionaría exactamente igual. Sólo que en el código que estés usando dentro de esa función anónima, respetes el nombre de los argumentos que hayas puesto.

Última edición por marlanga; 27/05/2012 a las 15:59