22/04/2011

Como funciona o jQuery

Olá galerinha, como tudo na vida, temos que começar do início. Traduzi (não ao pé da letra) o post do John que está no site do jQuery, esse post é um post introdutório, ele serve para pessoas que já conhecem de JavaScript mas não conhecem o jQuery.

jQuery: O básico

Esse tutorial básico irá lhe ajudar a começar com jQuery. Podemos começar criando uma página de teste, isso você já deve saber, ela será uma página HTML qualquer. (Se você não sabe o que é uma página HTML, você deve parar aqui e mudar de área =D).

<!doctype html>
<html>
  <head>
    <meta charset="utf-8">
    <title>Demo</title>
  </head>
  <body>
    <a href="http://jquerybrasil.org/">jQuery Brasil!!!</a>

    <script src="jquery.js"></script>
    <script>

    </script>
  </body>
</html>

Altere o atributo src na tag <script> para apontar para o local onde está o seu arquivo jquery.js.

EX: Considerando que seu html está na raiz do diretório. Se seu arquivo estiver dentro de uma pasta chamada js, você deve colocar src="js/jquery.js".

Você pode saber mais sobre como baixar e colocar em seu site o jQuery, na nossa área de downloads.

Codando no Document Ready

Antes do jQuery os desenvolvedores colocavam seus códigos dessa forma:

window.onload = function(){
    alert("olá");
}

Isso executaria um alert com a mensagem “olá” logo após a página ser carregada. O problema está em ter que esperar carregar todas as coisas da página, incluindo as imagens, para poder aparecer um simples alert na tela.

A razão de se usar o window.onload está em. que o document do HTML não está completamente carregado, dessa forma podendo causar vários erros no JavaScript.

Para resolver esse problema, o jQuery tem um método chamado Ready (controla o evento ready) que verifica quando o DOM está pronto para ser usado sem que seus elementos precisem ser carregado por completo.

$(document).ready(function(){
    // Seu codigo vai aqui!!
});

Dentro do evento ready podemos colocar um handler para o evento click em um link (tag HTML a)

 $(document).ready(function(){
   $("a").click(function(event){
     alert("Obrigado por visitar!");
   });
 });

Salve o HTML e recarregue a página no seu navegador.

Seu HTML deve estar próximo a isso:

<!doctype html>
<html>
    <head>
        <meta charset="utf-8">
        <title>Demo</title>
     </head>
<body>
    <a href="http://jquerybrasil.org/">jQuery Brasil</a>

    <script src="jquery.js"></script>
    <script>
     $(document).ready(function(){
        $("a").click(function(event){
            alert("Obrigado por visitar!");
        });
    });
    </script>
</body>
</html>

Demo

Perceberam que ao clicar no link ele da o alert mas, logo redireciona? Para prevenir que isso ocorra, não só para click, mas para a maioria dos eventos você consegue modificar seu comportamento padrão. Aqui iremos prevenir que ele siga o link. Para isso adicionamos o event.preventDefault(); no código.

 $(document).ready(function(){
   $("a").click(function(event){
     alert("Como você pode ver, o link não te leva a outra página");
     event.preventDefault();
   });
 });

Demo

Adicionando e removendo classes HTML (HTML class)

Uma tarefa comum é adicionar e remover class de elementos no html.

Primeiramente precisamos ter as class em nosso CSS.

<style>
    a.test { font-weight: bold; }
</style>

Após precisamos ter uma chamada da função addClass no nosso script

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

Após a execução desse script, que deve ser colocado dentro do nosso ready() conforme falado anteriormente, todos os <a> da página irão ficar em negrito.
Seu html deve ser algo próximo a isso:

<!doctype html>
<html>
  <head>
    <meta charset="utf-8">
    <title>Demo</title>

    <style>
        a.test { font-weight: bold; }
    </style>
  </head>
  <body>
    <a href="http://jquerybrasil.org/">jQuery Brasil!!!</a>
    <br />
    <br />
    <a href="http://jquery.com/">Site do jQuery</a>

    <br />
    <br />
    <a href="http://ruancarlos.com.br/">Site do Ruan</a>

    <script src="jquery.js"></script>
    <script>
         $(document).ready(function(){
           $("a").addClass("test");
         });
    </script>
  </body>
</html>

Demo

Vamos modificar um pouco esse script.

Vamos adicionar dois botões, cada um terá um comportamento diferente, um irá colocar a class nos links e o outro irá retirar.

Para isso vamos adicionar no nosso html os botões:

<button id="btn-adiciona">Adiciona class</button>
<br />
<button id="btn-remove">Remove class</button>

E no javascript as funções de click deles.

$("#btn-adiciona").click(function(){
	$("a").addClass("test");
})
$("#btn-remove").click(function(){
	$("a").removeClass("test");
})

Ficando com sua página dessa forma:

<!doctype html>
<html>
  <head>
    <meta charset="utf-8">
    <title>Demo</title>

    <style>
        a.test { font-weight: bold; }
    </style>
  </head>
  <body>
    <a href="http://jquerybrasil.org/">jQuery Brasil!!!</a>
    <br />
    <br />
    <a href="http://jquery.com/">Site do jQuery</a>

    <br />
    <br />
    <a href="http://ruancarlos.com.br/">Site do Ruan</a>
      <br />
      <br />
      <button id="btn-adiciona">Adiciona class</button><br />
      <button id="btn-remove">Remove class</button>

    <script src="jquery.js"></script>
    <script>
         $(document).ready(function(){
            $("#btn-adiciona").click(function(){
                $("a").addClass("test");
            })
            $("#btn-remove").click(function(){
                $("a").removeClass("test");
            })
         });
    </script>
  </body>
</html>

Demo

Eventos especiais

Aproveitando que estamos falando sobre manipulação, vamos falar um pouco sobre eventos. jQuery nos prove de vários métodos para efeitos.

Podemos utilizar nosso HTML e script do exemplo anterior para darmos uma incrementada. Vamos colocar um efeito a mais quando o usuário clica nos botões.

Alteramos a função do botão de adicionar para:

$("#btn-adiciona").click(function(){
	//pegamos todos os elementos < a > e colocamos em uma variável
	$a = $("a");
	//isso e igual a $("a").addClass("test");
	$a.addClass("test");
	//escondemos todos os elementos (< a >)
	$a.fadeOut();
	//mostramos todos os elementos (< a >)
	$a.fadeIn();
})

Com isso devemos ter um efeito de deixar os links em negrito adicionando a class “test” $a.addClass("test");, efeito de fazer sumir os links com o $a.fadeOut(); e de aparecer com $a.fadeIn();.

Demo

Callback

Yesss, jQuery tem callback, mas o que é um callback?
Callback são funções (vamos chamar de func2) que são passadas como argumentos de outra função (vamos chamar de func1) e são executas logo após essas funções (func1) serem executadas.
O importante nesse ponto é saber como a sintaxe do jQuery funciona.

Callback sem argumentos

Para uma função de callback que não recebe nenhum argumento:

$.get('pagina.html', minhaCallback);

Nota: O segundo parâmentro nessa função é simplesmente o nome (sem ser uma string e sem parentêses) da função de callback.

Callback com argumentos

Callback com argumentos tem uma forma diferente, se tentar da forma normal não irá funcionar:
Não funciona assim:

$.get('pagina.html', minhaCallback(parametro1, parametro2));

Ele não funciona dessa forma por que minhaCallback(parametro1, parametro2) é executado logo quando o interpretador do JavaScript chegar a essa linha no seu código, dessa forma apenas colocando o retorno dela como segundo argumento do $.get

Forma certa

$.get('pagina.html', function(){
    minhaCallback(param1, param2);
});

Dessa forma apenas criamos uma função anônima (apenas um bloco de declarações) e isso é registrado como uma função de callback. Nesse caso nossa função anônima faz apenas uma coisa, chamar a função minhaCallback passando seus argumentos, mas nós poderíamos declarar qualquer código JavaScript nela.


,

Comentários

  • fabio 27 de abril de 2012

    O melhor conteúdo de jquery que encontrei na internet!! Obrigado!

Deixe seu Comentário