jQuery, navaja multiusos

Germán Martínez Maldonado
(GitHub: @germaaan / Twitter: @germaaan_)

Oficina de Software Libre de la Universidad de Granada
(Twitter: @OSLUGR / Facebook: @SoftwareLibreUGR)

Granada Geek
(http://www.meetup.com/es-ES/Granada-Geek/)

image
image

image

¿Qué es?

  • Una librería de JavaScript open source que nos facilita el desarrollo de código en ese lenguaje
  • Gran ventaja: independiente del navegador
  • Versión actual: 2.2.3
  • Sin soporte para IE 6/7/8 (Una pena...)

¿Qué hace?

Entre otras cosas es especialmente popular por facilitar:

  • Manipulación elementos del HTML/DOM
  • Manipulación elementos CSS
  • Gestión eventos HTML
  • Crea efectos y animaciones
  • Uso de AJAX
  • Otras utilidades

Comparación JavaScript estándar / jQuery

Manipular elementos del HTML/DOM

                    
                      
                    
                  

Usando JavaScript estándar:

                        
                          document.getElementById("nombre") = "Germán";
                        
                      

Usando jQuery:

                        
                          $("#nombre").val("Germán);
                      
                    

Manipular elementos del CSS

                    
                      
                    
                  

Usando JavaScript estándar:

                        
                          document.getElementById("cuadro").style.background-color = "red";
document.getElementById("cuadro").style.border-color = "black";
                        
                      

Usando jQuery:

                        
                          $("#cuadro").css({"background-color":"red", "border-color":"black"});
                      
                    

Gestionar eventos HTML

                    
                      
                    
                  

Usando JavaScript estándar:

                        
                          
     OR
document.getElementById("github").addEventListener('click', cargarJSON);
                        
                      

Usando jQuery:

                        
                          $("#github").click(function() {
  ...
});
                      
                    

Crea efectos y animaciones

Usando JavaScript estándar:

                        
                          function fadeOutEffect() {
    var fadeTarget = document.getElementById("cuadro");
    var fadeEffect = setInterval(function () {
        if (!fadeTarget.style.opacity) {
            fadeTarget.style.opacity = 1;
        }
        if (fadeTarget.style.opacity < 0.1) {
            clearInterval(fadeEffect);
        } else {
            fadeTarget.style.opacity -= 0.1;
        }
    }, 200);
}
                        
                      

Crea efectos y animaciones

Usando jQuery:

                        
                          $("cuadro").click(function(){
    $("#cuadro").fadeOut(200);
});
                      
                    

Usar AJAX (Ej: recuperar archivo JSON)

Usando JavaScript estándar:

                        
                          function cargarJSON() {
    var xhttp = new XMLHttpRequest();

    xhttp.onreadystatechange = function() {
      if (xhttp.readyState == 4 && xhttp.status == 200) {
        var objeto = JSON.parse(http_request.responseText);
        document.getElementById("nombre") = objeto.login;
      }
    };

    xhttp.open("GET", "https://api.github.com/users/germaaan", true);
    xhttp.send();
}
                        
                      

Usar AJAX (Ej: recuperar archivo JSON)

Usando jQuery:

                        
                          $.getJSON("https://api.github.com/users/germaaan", function(data) {
    $("#nombre").val(data.login);
});
                      
                    

Escribir menos, hacer más

Genial, ¿eh?

kanye_approves

Instalación

Uso

ejemplo.html
                    
                      

                    
                  
codigo.js
                    
                      $(document).ready(function(){
     ...
});
                    
                  
                    
                      $(function(){
     ...
});
                    
                  

Sintaxis

Seleccionamos un elemento y realizamos sobre él la acción que queramos.

                    
                      $(selector).action()
                    
                  
  • $: símbolo que indica que usamos jQuery
  • selector: selecciona el elemento
  • action: acción que ejecuta

Selectores

Selector Ejemplo Selecciona
* $("*") Todos los elementos
#id $("#prueba") Elementos con id "prueba"
.class $(".otra") Elementos con clase "otra"
element $("p") Elementos <p>
:header $(":header") Todos los <h1>, <h2>, <h3>...
:input $(":input") Todos los inputs
:first $("p:first") Primer <p>
:hidden $("p:hidden") Todos los <p> ocultos
[attribute=value] $("[href='index.htm']") Todos los elementos con un atributo href igual a "index.html"

jQuery Selectors

Eventos

Ratón Teclado Formularios Ventana
click keypress submit load
dblclick keydown change resize
mouseenter keyup focus scroll
mouseleave blur unload

                    
                    $("form").submit(function(event){
    event.preventDefault();

    ...
});
                  
                

jQuery Event Methods

Manipulación de DOM

Usando los selectores, manipulamos elementos DOM siguiendo una metodología GET/SET.

Manipulación de DOM / GET

                    
                      

Estoy aquí obligado para firmar

$("#cosa").html(); $("#cosa").text(); $("#nombre").val(); $("#nombre").attr("type");

Manipulación de DOM / GET

  • html(): obtiene el html del elemento
                            
                              

    Estoy aquí obligado para firmar

  • text(): obtiene el texto del elemento
                            
                              Estoy aquí obligado para firmar
  • val(): obtiene el valor del elemento
                            
                              Cualquiera
                            
                          
  • val(): obtiene el valor del atributo del elemento
                              
                                text
                              
                            

Manipulación de DOM / SET

                    
                      

Estoy aquí obligado para firmar

$("#cosa").html("

Estoy aquí MUY INTERESADO

"); $("#cosa").text("Estoy aquí MUY INTERESADO"); $("#nombre").val("Nadie")); $("#nombre").attr("type", "textarea");

Manipulación de CSS

                    
                      .alerta {
     font-weight: bold;
     color: red;
}


$("h1").addClass("alerta");
$("h1").removeClass("alerta");
$("h1").toggleClass("alert");
$("h1").css({"font-weight":"bold", "color":"red"});
                    
                  

jQuery HTML / CSS Methods

Crear efectos

Método Resultado
hide(velocidad, callback) Oculta el elemento si está visible.
show(velocidad, callback) Muestra el elemento si está oculto.
toggle(velocidad, callback) Alterna entre visible/oculto.
fadeIn(velocidad, callback) El elemento aparece a la velocidad indicada.
fadeOut(velocidad, callback) El elemento desaparece a la velocidad indicada.
fadeToggle(velocidad, callback) Alterna entre aparecer/desaparecer.
fadeTo(velocidad, transparencia) El elemento desaparece con una transparencia entre 0-1.
slideDown(velocidad, callback) Desliza el elemento hacia abajo.
slideUp(velocidad, callback) Desliza el elemento hacia arriba.
slideToogle(velocidad, callback) Alterna entre deslizar hacia abajo/arriba.
stop() Detiene todas las animaciones de todos los elementos.

  • velocidad: slow | fast | milisegundos
  • transparencia: 0-1
  • callback: función que se ejecutará justo después

Crear animaciones

                    
                      $("cosa").animate({
     left: '250px',
     opacity: '0.5',
     height: '150px',
     width: '150px'
});
                    
                  

Efectos encadenados

                    
                      $("#cosa").css("background-color", "red").slideUp(2000)
     .slideDown(2000);
                    
                  

jQuery Effect Methods

AJAX

Método $.ajax()
                    
                      $.ajax({url: "https://api.github.com/users/germaaan",
  success: function(result){ $("#nombre").text(result.login); },
  error: function(xhr){ alert("ERROR: " + xhr.status + " "
    + xhr.statusText); }
});
                    
                  

jQuery ajax() Method

AJAX

Método $.get() / $.post()
                    
$.get(URL,data,function(data,status,xhr),dataType)
$.post(URL,data,function(data,status,xhr),dataType)

$.get("https://api.github.com/users/germaaan",
  data: {"dato": 43},
  function(data, status){
     $("#nombre").text(data.login), "json";
});
                    
                  

AJAX

Método $.load()
                    
$(selector).load(URL,data,function(response,status,xhr))

$("#texto").load("nombres.txt");
                    
                  

AJAX

Método $.getJSON()
                    
$().getJSON(URL,data, sucess(data,status,xhr))

$.getJSON("/API", function(result){
  $.each(data, function(clave, valor) {
    $("#listado").append("");
  });
});
                    
                  

AJAX

Método $.getScript()
                    
$().getScript(URL, success(response,status))

$("#boton").click(function(){
    $.getScript("prueba.js");
});
                    
                  

noConflict()

HTML
                    
                      


JavaScript
  
jq(document).ready(function(){
    jq("button").click(function(){
        jq("#aviso").text("Disuélvanse, aquí no ha pasado nada.");
    });
});

each()

                    
                      $("li").each(function(){
     alert($(this).text())
});
                    
                  

toArray()

                    
                      var x = $("li").toArray()

for (i = 0; i< x.length; i++) {
     alert(x[i].innerHTML);
}
                    
                  

Mucha teoría ya, ¿no?

squirtle

Aplicación de ejemplo

Aquí



Referencias

jQuery Tutorial

jQuery API