jQuery na Prática - Cauê Fajoli

73
jQuery na Prática

Transcript of jQuery na Prática - Cauê Fajoli

Page 1: jQuery na Prática - Cauê Fajoli

jQuery na Prática

Page 2: jQuery na Prática - Cauê Fajoli

Cauê [email protected]

Software Developer

Page 3: jQuery na Prática - Cauê Fajoli

Agenda

Introdução ao JavaScript e jQuery Fundamentos de JavaScript Document Object Model (DOM) Preparando o Ambiente Seletores jQuery Manipulando CSS Manipulando Conteúdo Eventos Animação Funções jQuery Ajax Formulários

Page 4: jQuery na Prática - Cauê Fajoli

Introdução ao JavaScript e jQuery

Page 5: jQuery na Prática - Cauê Fajoli

JavaScript hoje

Page 6: jQuery na Prática - Cauê Fajoli

Por que usar jQuery?

jQuery é uma camada de abstração

Use jQuery porque...

... é fácil

... é produtivo

... é simples

... constantes atualizações

... suporte da comunidade

Page 7: jQuery na Prática - Cauê Fajoli

jQuery não é nenhuma panacéia

Você ainda precisa de JavaScript

jQuery tem seu peso

Mais uma camada

Abstração

Page 8: jQuery na Prática - Cauê Fajoli

Fundamentos de JavaScript

Page 9: jQuery na Prática - Cauê Fajoli

Criando variáveis

Dê nome aos dados

var titulo = “jQuery na Prática”;

Palavra reservada: var

Nomes de variáveis normalmente em snake_case

Linha termina em ponto e vírgula ( ; )

Page 10: jQuery na Prática - Cauê Fajoli

Variáveis e dados

• Tipagem fraca, dinâmica e implícita

var numero = 100;(int)

var titulo = “jQuery na Prática”;(string)

var quantidade = 5.7;(float)

var erro = true;(boolean)

Page 11: jQuery na Prática - Cauê Fajoli

Funções

function soma (num1, num2) { var resultado; resultado = num1 + num2; return resultado;}

• Palavra reservada: function

• Nomes de funções normalmente em camelCase

• Linha termina em ponto e vírgula ( ; )

Page 12: jQuery na Prática - Cauê Fajoli

Funções globais do JavaScript

alert(“Olá, mundo!”);

void

var resposta = confirm(“Confirmar exclusão do registro?”);

Retorna boolean

var idade = prompt(“Informe sua idade:”);

Retorna string

Page 13: jQuery na Prática - Cauê Fajoli

Funções de string

var titulo = “jQuery na Prática”;

titulo.toLowerCase(); “jquery na prática”

titulo.toUpperCase(); “JQUERY NA PRÁTICA”

titulo.charAt(2); “u”

titulo.replace(“a”, “4”); “jQuery n4 Prátic4”

titulo.split(“ ”); [“jQuery”, “na”, “Prática”]

Page 14: jQuery na Prática - Cauê Fajoli

Operações numéricas

10 + 5; 15

10 / 2; 5

parseInt(“10 reais”); 10

var num = 10;num.toString(); “10”

Page 15: jQuery na Prática - Cauê Fajoli

Arrays

var frutas = [“maçã”, “uva”, “abacaxi”];(Inicializa um array na variável frutas)

frutas[2]; “abacaxi”(Retorna a posição 2)

frutas.length; 3(Retorna o tamanho da lista)

frutas.reverse(); [“abacaxi”, “uva”, “maçã”](Retorna a lista em ordem inversa)

Page 16: jQuery na Prática - Cauê Fajoli

Document Object Model (DOM)

Page 17: jQuery na Prática - Cauê Fajoli

DOM<html>

<head>

<title>jQuery na Prática</title>

</head>

<body>

<h1 id=“titulo”>Curso de jQuery</h1>

<p class=“autor”>Caue Fajoli</p>

<ul>

<li>JS</li>

<li>DOM</li>

<li>jQuery</li>

</ul>

</body>

</html>

Page 18: jQuery na Prática - Cauê Fajoli

DOMhtml

head body

title h1#titulo p.autor ul

lililijQuery na Prática

Curso de jQuery

Cauê Fajoli

JS DOM jQuery

Page 19: jQuery na Prática - Cauê Fajoli

Preparando o Ambiente

Page 20: jQuery na Prática - Cauê Fajoli

http://jquery.com

Page 21: jQuery na Prática - Cauê Fajoli

Carregando jQuery

<script type=“text/javascript” src=“jquery-X.X.X.min.js”></script>

Page 22: jQuery na Prática - Cauê Fajoli

Verificando se o jQuery está carregado<script>

console.log(jQuery);

//ou

alert(jQuery);

</script>

jQuery; ReferenceError: jQuery is not defined(jQuery não está carregado)

jQuery; function (e,t){return new v.fn.init(e,t,n)}(Pronto para começar!)

$; function (e,t){return new v.fn.init(e,t,n)}(Também jQuery!)

Page 23: jQuery na Prática - Cauê Fajoli

Seletores jQuery

jQuery$(“h1”);

(Nome do elemento)

DOMhtml

body

h1 jQuery na Prática p.autor Cauê Fajoli p#rodape [email protected]

Page 24: jQuery na Prática - Cauê Fajoli

Seletores jQuery

jQuery$(“p”);

(Nome do elemento)

DOMhtml

body

h1 jQuery na Prática p.autor Cauê Fajoli p#rodape [email protected]

Page 25: jQuery na Prática - Cauê Fajoli

Seletores jQuery

jQuery$(“p.autor”);

(Elemento + . + Classe)

DOMhtml

body

h1 jQuery na Prática p.autor Cauê Fajoli p#rodape [email protected]

Page 26: jQuery na Prática - Cauê Fajoli

Seletores jQuery

jQuery$(“.autor”);

(Somente a classe)

DOMhtml

body

h1 jQuery na Prática p.autor Cauê Fajoli p#rodape [email protected]

Page 27: jQuery na Prática - Cauê Fajoli

Seletores jQuery

jQuery$(“p#rodape”);

(Elemento + # + Id)

DOMhtml

body

h1 jQuery na Prática p.autor Cauê Fajoli p#rodape [email protected]

Page 28: jQuery na Prática - Cauê Fajoli

Resultado da Seleção

jQuery$(“p”);

DOMp.autor Cauê Fajolip#rodape [email protected]

JavaScript[“<p class=‘autor’>Cauê Fajoli</p>”, “<p id=‘rodape’>[email protected]</p>”]

Page 29: jQuery na Prática - Cauê Fajoli

Resultado da Seleção

jQuery$(“h1, p#rodape”); $(“h1”, “p#rodape”);

DOMh1 jQuery na Práticap#rodape vitorfs.com/jquery-na-pratica

JavaScript[“<h1>Vitor Freitas</h1>”, “<p id=‘rodape’>vitorfs.com/jquery-na-pratica</p>”]

Errado!

Page 30: jQuery na Prática - Cauê Fajoli

Espaço em branco

$(“p#rodape”);

Elemento p com id rodape

$(“p #rodape”);

Elemento com id rodape dentro do elemento p

Page 31: jQuery na Prática - Cauê Fajoli

Selecionando atributos

$(“input”);// Todos inputs do DOM

$(“input[type=‘text’]”);// Todos inputs do tipo text

$(“input[type=‘text’][name=‘email’]”);// Selecione por mais de um atributo

$(“p[id=‘rodape’]”); ou $(“p#rodape”);

$(“p[class=‘autor’]”); ou $(“p.autor”);

Page 32: jQuery na Prática - Cauê Fajoli

Seletores css também são válidos

<i class=“icon-ok”></i><i class=“icon-cancelar”></i>

$(“i[class^=‘icon-’]”);// Todos elementos i que a classe começa com “icon-”

$(“i[class$=‘ok’]”);// Todos elementos i que a classe termina com “ok”

$(“i[class*=‘icon’]”);// Todos elementos i que a classe possua “icon”

Page 33: jQuery na Prática - Cauê Fajoli

Filtros de seleção

Filtros baseados no index do array de retorno da seleção

$(“p:first”); // primeiro p da seleção

$(“p:last”); // último p da seleção

$(“li:eq(2)”); // elemento li com index 2

$(“tr:even”); // todos tr com index par

$(“tr:odd”); // todos tr com index ímpar

Page 34: jQuery na Prática - Cauê Fajoli

Filtros de hierarquia

Filtros baseados no hierarquia do DOM

$(“body div”); // todas as divs dentro do body

$(“body > div”); // todas as divs que estão diretamente abaixo do body

$(“label + input”); // label com input adjacente (deve possuir o mesmo elemento pai)

Page 35: jQuery na Prática - Cauê Fajoli

Manipulando CSS

Page 36: jQuery na Prática - Cauê Fajoli

Manipulando CSS

<p>Lorem ipsum dolor sit amet</p>

$(”p”).css(”font-size”); // retorna o valor do font-size do elemento p

$(”p”).css(”font-size”, ”12px”); // define o font-size do elemento p para 12px

Page 37: jQuery na Prática - Cauê Fajoli

Definindo múltiplos atributos

Utilizando métodos encadeados

$(“p”).css(“font-size”, “24px”) .css(“font-weight”, “bold”) .css(“line-height”, “32px”);

Ou um map

$(“p”).css({“font-size”: “24px”, “font-weight”: “bold”, “line-height”: “32px”});

Page 38: jQuery na Prática - Cauê Fajoli

Mas... vamos com calma

HTMLConteúdo

CSSApresentação

JavaScriptInteração

Page 39: jQuery na Prática - Cauê Fajoli

Interface CSS

DOM e CSS comunicam via IDs e Classes

Use .css() com cautela

Manipule IDs e Classes

Mais seguro e manutenível

Page 40: jQuery na Prática - Cauê Fajoli

Manipulando classes

$(“p”).hasClass(“autor”); // retorna true ou false

$(“p”).addClass(“bigger”);

$(“p”).removeClass(“bigger”); // remove a classe passada via parâmetro

$(“p”).removeClass(); // remove todas as classes

$(“p”).toggleClass(“bigger”); // se o elemento tiver a classe bigger, o jQuery remove. Se não tiver, adiciona

Page 41: jQuery na Prática - Cauê Fajoli

Visibilidade

$(“p.autor”).hide();[<p class=“autor” style=“display: none”>Cauê Fajoli</p>]

$(“p.autor”).show();[<p class=“autor” style=“display: normal”>Cauê Fajoli</p>]

$(“p.autor”).toggle();Alterna entre hide e show

Page 42: jQuery na Prática - Cauê Fajoli

Manipulando Conteúdo

Page 43: jQuery na Prática - Cauê Fajoli

Template

<html>

<head>

<title>jQuery na Prática</title>

</head>

<body>

<h2>Cronograma</h2>

<ul>

<li>Fundamentos <span class=“js”>JavaScript</span></li>

<li>DOM</li>

<li>jQuery</li>

</ul>

<p>Data: <span class=“data”>21/01 à 25/01</span></p>

<p>Horário: <span class=“hora”>19:00 às 22:40</span></p>

</body>

</html>

Page 44: jQuery na Prática - Cauê Fajoli

Acessando text e html

• html Recupera todo conteúdo dentro do elemento selecionado, inclusive as tags HTML

$(“p:first”).html();[“Data: <span class=‘data’>21/01 à 25/01</span>”]

• text Recupera todo texto dentro do elemento selecionado, ignorando as tags HTML

$(“p:first”).text();[“Data: 21/01 à 25/01”]

Page 45: jQuery na Prática - Cauê Fajoli

Definindo text$(“span.data”).text(“28/01 à 01/02”);

<span class=“data”>21/01 à 25/01</span><span class=“data”>28/01 à 01/02</span>

Cronograma• Fundamentos JavaScript• DOM• jQuery

Data: 21/01 à 25/01Horário: 19:00 às 22:40

Cronograma• Fundamentos JavaScript• DOM• jQuery

Data: 28/01 à 01/02Horário: 19:00 às 22:40

Page 46: jQuery na Prática - Cauê Fajoli

Definindo html$(“span.data”).html(“<u>28/01 à 01/02</u>”);

<span class=“data”>21/01 à 25/01</span><span class=“data”><u>28/01 à 01/02</u></span>

Cronograma• Fundamentos JavaScript• DOM• jQuery

Data: 21/01 à 25/01Horário: 19:00 às 22:40

Cronograma• Fundamentos JavaScript• DOM• jQuery

Data: 28/01 à 01/02Horário: 19:00 às 22:40

Page 47: jQuery na Prática - Cauê Fajoli

Inserindo html no DOM

$(“ul”).append(“<li>Seletores jQuery</li>”);Insere elemento dentro do final da seleção

$(“ul”).prepend(“<li>Seletores jQuery</li>”);Insere elemento dentro do inicio da seleção

$(“ul”).before(“<h3>Conteúdo</h3>”);Insere elemento antes da seleção

$(“ul”).after(“<h3>Data e Hora:</h3>”);Insere elemento após a seleção

Page 48: jQuery na Prática - Cauê Fajoli

Append

$(“ul”).append(“<li>Seletores jQuery</li>”);

Cronograma• Fundamentos JavaScript• DOM• jQuery• Seletores jQuery

Data: 21/01 à 25/01Horário: 19:00 às 22:40

Page 49: jQuery na Prática - Cauê Fajoli

Prepend

$(“ul”).prepend(“<li>Seletores jQuery</li>”);

Cronograma• Seletores jQuery• Fundamentos JavaScript• DOM• jQuery

Data: 21/01 à 25/01Horário: 19:00 às 22:40

Page 50: jQuery na Prática - Cauê Fajoli

Before

$(“ul”).before(“<h3>Conteúdo</h3>”);

CronogramaConteúdo• Fundamentos JavaScript• DOM• jQuery

Data: 21/01 à 25/01Horário: 19:00 às 22:40

Page 51: jQuery na Prática - Cauê Fajoli

After

$(“ul”).after(“<h3>Data e Hora:</h3>”);

Cronograma• Fundamentos JavaScript• DOM• jQuery

Data e Hora:Data: 21/01 à 25/01Horário: 19:00 às 22:40

Page 52: jQuery na Prática - Cauê Fajoli

Eventos

Page 53: jQuery na Prática - Cauê Fajoli

Como funciona

<html>

<head>

<title>jQuery na Prática</title>

</head>

<body>

<h2>Cronograma</h2>

<ul>

<li>Fundamentos <span class=“js”>JavaScript</span></li>

<li>DOM</li>

<li>jQuery</li>

</ul>

<p>Data: <span class=“data”>21/01 à 25/01</span></p>

<p>Horário: <span class=“hora”>19:00 às 22:40</span></p>

</body>

</html>

Click!

Possui handler

?

Possui handler

?

Possui handler

?

Possui handler

?

Page 54: jQuery na Prática - Cauê Fajoli

Document Ready<html> <head> <title>jQuery na Prática</title> <script src=“jquery.js”></script> <script> $(document).ready(function () { $(“p”).hide(); }); </script> </head> <body> <h2>Cronograma</h2> <ul> <li>Fundamentos <span class=“js”>JavaScript</span></li> <li>DOM</li> <li>jQuery</li> </ul> <p>Data: <span class=“data”>21/01 à 25/01</span></p> <p>Horário: <span class=“hora”>19:00 às 22:40</span></p> </body></html>

Documento está pronto!

Executa o handler

Page 55: jQuery na Prática - Cauê Fajoli

Eventos de Mouse$(“p”).click();//Dispara no evento de click do mouse

$(“p”).dblclick();//Dispara com click duplo

$(“p”).hover();//Dispara quando mouse entra e/ou sai do elemento

$(“p”).mousedown();//Dispara quando o botão do mouse é pressionado

$(“p”).mouseenter();//Dispara quando o mouse entra no elemento

$(“p”).mouseleave();//Dispara quando o mouse sai do elemento

$(“p”).mousemove();//Dispara quando o mouse se move

$(“p”).mouseup();//Dispara quando ao término do click do mouse

Page 56: jQuery na Prática - Cauê Fajoli

Click

function esconder() { $(“p”).hide();}

$(“p”).click(esconder);

Normalmente utilizamos funções anônimas

$(“p”).click(function () { $(“p”).hide();});

Page 57: jQuery na Prática - Cauê Fajoli

Hover

.destacar { background: yellow;}

$(“p”).hover(function () { $(this).addClass(“destacar”);});

Data: 21/01 à 25/05Horário: 19:00 às 22:40Data: 21/01 à 25/05

Page 58: jQuery na Prática - Cauê Fajoli

Hover

.destacar { background: yellow;}

$(“p”).hover( function () { $(this).addClass(“destacar”);}, function () { $(this).removeClass(“destacar”);});

Data: 21/01 à 25/05Horário: 19:00 às 22:40Data: 21/01 à 25/05

Page 59: jQuery na Prática - Cauê Fajoli

Hover

.destacar { background: yellow;}

$(“p”).hover(function () { $(this).toggleClass(“destacar”);});

Data: 21/01 à 25/05Horário: 19:00 às 22:40Data: 21/01 à 25/05

Page 60: jQuery na Prática - Cauê Fajoli

Eventos de Teclado

$(“input”).keydown();//Dispara ao apertar a tecla

$(“input”).keypress();//Dispara ao pressionar a tecla

$(“input”).keyup();//Dispara ao soltar a tecla

Page 61: jQuery na Prática - Cauê Fajoli

Eventos de Formulário

$(“input”).blur();//Dispara ao input perder o foco

$(“input”).change();//Dispara quando um valor é alterado

$(“input”).focus();//Dispara quando um input recebe foco

$(“input”).select();//Dispara ao selecionar um texto, option, radio

$(“input”).submit();//Dispara submeter o formulário

Page 62: jQuery na Prática - Cauê Fajoli

Objeto event

$(“body”).keypress(function (event) {

});

event.which; // código númerico da tecla pressionada

event.preventDefault(); // evita a ação padrão do browser

event.stopPropagation(); // evita propagação do evento no DOM

Page 63: jQuery na Prática - Cauê Fajoli

Animação

Page 64: jQuery na Prática - Cauê Fajoli

Animações slide

.slideUp([duração][,callback]);

duração Tempo da animação em milisegundos Default 400 milisegundos Aceita parâmetros “slow” (600ms) e “fast” (200ms)

callback Função que será executada após o término da animação

Page 65: jQuery na Prática - Cauê Fajoli

slideUp, slideDown e slideToggle

$(“p”).slideUp(“slow”);

$(“p”).slideUp(1000, function () { alert(“Concluiu a animação!”);});

$(“p”).slideDown(“fast”);

$(“p”).slideToggle();

Page 66: jQuery na Prática - Cauê Fajoli

Animações fade

Utiliza os mesmos parâmetros do slide

$(“p”).fadeIn(“slow”);

$(“p”).fadeIn(1000, function () { alert(“Concluiu a animação!”);});

$(“p”).fadeOut(“fast”);

$(“p”).fadeToggle();

Page 67: jQuery na Prática - Cauê Fajoli

Funções jQuery

Page 68: jQuery na Prática - Cauê Fajoli

Adicionando funções customizadas

$.fn.vazio = function () { var value = $(this).val(); if (value == “”) { return true; } else { return false; }};

$(“input”).vazio();

Page 69: jQuery na Prática - Cauê Fajoli

Ajax

Page 70: jQuery na Prática - Cauê Fajoli

XMLHttpRequest Requisições assíncronas por trás dos panos

$.ajax({ url: ‘usuarios.php’, data: { id: “10”, acao: “editar” }, cache: false, type: “POST”, beforeSend: function () { // execução antes de realizar requisição }, success: function (data) { // execução em caso de sucesso }, error: function () { // execução em caso de erro } complete: function () { // execução ao terminar requisição }});

Page 71: jQuery na Prática - Cauê Fajoli

Formulários

Page 72: jQuery na Prática - Cauê Fajoli

Serializando formulários

<form method=“post” action=“cadastro.php” id=“cadastro”>

Nome: <input type=“text” name=“nome” id=“nome”>

Email: <input type=“text” name=“email” id=“email”>

Cpf: <input type=“text” name=“cpf” id=“cpf”>

<button type=“submit”>Enviar</button>

</form>

$(“#cadastro”).serialize();

Retorna: nome=Caue&[email protected]&cpf=123456789012

Caue

[email protected]

123456789012

Nome:Email:Cpf:

Page 73: jQuery na Prática - Cauê Fajoli

<h1>Muito Obrigado</h1>

<a href="mailto:[email protected]"></a>

<p>Cauê Fajoli</p>