Quantcast
Channel: Lecciones Prácticas » jquery
Viewing all articles
Browse latest Browse all 8

jQuery en 10 minutos | guia para impacientes

$
0
0

¿Quieres aprender jQuery rápido, gratis y fácilmente? Si sabes ya algo de javascript, esto va a ser coser y cantar.

Incluir la librería

Siempre es recomendable delegar el hosting de la librería a google. ¿Por qué? lee esto.

<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.6.1/jquery.min.js"></script>

Acceder a un elemento del DOM

Hay varias formas de acceder a los elementos del DOM. Las más comunes son por id, por clase o por elemento.

Si quieres, puedes consultar el listado completo de selectores en la web oficial.

Si eres impaciente, empieza viendo un ejemplo tonto de acceso de las tres formas.

Acceso por id

Asi se accede al elemento del DOM identificado por id=identificador

$("#identificador").click(function(){
  alert("hola");
});

Acceso por clase

Asi se accede a los elementos del DOM que sean de clase=’miclase’

$(".miClase").click(function(){
  alert("hola");
});

Acceso por nombre elemento

Asi se accede al PRIMER elemento del dom que sea un <a>

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

Acceso por otros métodos: name

Y una forma algo más elaborada de acceder a otros elementos. Por ejemplo, acceder al PRIMER input con name=first_name dentro del primer form que se encuentre:

$("input[name=first_name]");

El método de arriba es un poco lento porque hay que recorrer tooooodos los (posibles) forms del DOM. Es mejor atacar directamente al form en cuestión. Supongamos que el form id=myform.

$("#myform input[name=first_name]")

Funciones que se ejecutarán tan pronto como el DOM esté listo

Imagina que deseas que se cargue el dom completo antes de ejecutar algunas funciones. Lo harás asi:

<script type="text/javascript">
$(document).ready(function(){
                        // aqui defino lo que quiero que se ejecute cuando el DOM esté listo
 
			// Cambio el comportamiento del div con id=jeje ante el evento 'click'
			$("#jeje").click(function(){
    				alert('Has hecho click en la zona identificada por id=jeje');
			});
 
                        // también puedo llamar a funciones definidas en otro js
                        mifuncion();
 
		});
</script>

Prevenir la reacción estándar del navegador ante un evento

Los navegadores tienen un comportamiento predefinido frente a algunos eventos. Con jQuery podermos anularlo asi:

$("a").click(function(event){
    event.preventDefault();
    // mas codigo
});

Callbacks

Funciones que se pasan como parámetro a otra función y se ejecutan cuando la función padre termina.

Callback sin parámetros

Ejemplo:

$.get('myhtmlpage',myCallback);

Callback con parámetros

Ojo, hazlo asi:

$.get('myhtmlpage',function(){
  myCallBack(param1,param2)
});

Y no asi

$.get('myhtmlpage',myCallBack(param1,param2));

Si haces lo segundo, se pasará como nombre de función callback el resultado de ejecutar myCallBack(param1,param2)… lo que NO es correcto!

Además de pasar parámeotros por GET ($.get), también se admiten peticiones por POST ($.post) y otras. Consulta la lista de shorthand-methods completa en la web de jQuery

AJAX en jQuery

jQuery admite las peticiones asíncronas con la función jQuery.ajax. Por ejemplo este trozo de código llama a la url especificada y cuando se termina la ejecución del código de la misma, se ejecuta la función success. En data tendremos el resultado de la ejecución de la url.

$.ajax({
  url: 'ajax/test.html',
  success: function(data) {
    $('.result').html(data);
    alert('Load was performed.');
  }
});

Un ejemplo algo más completo de esto mismo (con su HTML y tal)

    <html>
    <head>
        <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.6.1/jquery.min.js"></script>
        <script type="text/javascript">
            $(document).ready(function(){
                // Inicializo controlador del div con id=jeje
                $("#jeje").click(function(){
                    $.ajax({
                    url: 'callback.php',
                    success: function(data) {
                        $('#botones').html(data);
                        //alert('Load was performed. Data = '+data+'.');
                    }
                    });
                });
            });
        </script>
    </head>
    <body>
        <div id="jeje" style="background-color: #ff0000; width: 150px; height: 150px; border:1px solid;">
            Haz click por aqui dentro...
        </div>
        <div id="botones">
            Al hacer click arriba en esta zona aparecerán los botones
      </div>       
    </body>
</html>

Y el código php al que llamamos (callback.php) podría ser tan simple como:

<?php
  echo '<input type="button" id="aficha" value="Añadir Ficha" />';
  return 0;
?>

Eventos en jQuery

Si habéis leido hasta aqui, veréis que he usado varias veces el evento .click(). Hay muchos más eventos (consulta el listado completo de eventos). Su invocación y uso es similar al .click()
Es importante notar que no todos se pueden aplicar a todo tipo de elementos. Por ejemplo, el .select() solo es aplicable a elementos input-text y textareas de un form.

Manipulación del DOM

El siguiente grupo de elementos son los que hacen referencia a la manipulación del DOM.
El manual completo con todas las funciones se puede ver aqui

Por ejemplo, podemos añadir clase a un determinado elemento:

$("a").addClass("miclase");

pasando de:

<a href="mipagina.html">mipagina</a>

a

<a class="miclase" href="mipagina.html">mipagina</a>

De forma similar, podemos eliminar una clase:

$("a").removeClass("miclase");

Se pueden combinar ambas para obtener interesantes efectos:

$("a").removeClass("inactive").addClass("active");

Incluso poner clases múltiples:

$("a").addClass("miclase activo");

Otro de los manipuladores interesantes es .attr(), con el que podemos obtener y cambiar el valor de un atributo.

var eltitulo = $("div").attr("title") + "_modificado";
$("div").attr("title", eltitulo);
/* o lo que es lo mismo, $("div").attr("title") = eltitulo; */

Incluso podemos cambiar varios atributos con una sola llamada:

$("div").attr({
  title: 'mititulo',
  alt: 'texto alternativo'
});

Podemos hacer también un loop por los atributos usando .each():

function(target) {
    $.each($(target.attributes), function(index) {
      alert("Attribute name: " + target.attributes[index].name + " Attribute value: " + target.attributes[index].value);
});

Efectos

El último grupo importante que nos falta por ver. Por ejemplo, si queremos que un div se oculte, podemos usar .hide(). Incluso nos permite ajustar la velocidad con que queremos que se produzca este “escondido”.

Otros efectos básicos son .show() y .toggle().

Pero hay muchos más efectos (algunos bastante complejos). Podéis consultar el listado completo de efectos en la web de jQuery.


Viewing all articles
Browse latest Browse all 8

Trending Articles