SlideShare uma empresa Scribd logo
1 de 127
Baixar para ler offline
Eduardo Mendes (edumendes@gmail.com)
jQuery
1
Eduardo Mendes (edumendes@gmail.com)2
Biblioteca JavaScript
rápida, pequena e rica em recursos
Percorre e manipula documentos
HTML, trata eventos, animações
Facilita a utilização de AJAX
Eduardo Mendes (edumendes@gmail.com)33
32kB
CSS 3
Cross-Browser
Eduardo Mendes (edumendes@gmail.com)
O que você pode fazer com jQuery
4
revelar elementos da interface
Eduardo Mendes (edumendes@gmail.com)
O que você pode fazer com jQuery
5
alterar conteúdo baseado na interação do usuário
Eduardo Mendes (edumendes@gmail.com)
O5 maneiras
de utilizar jQuery
6
Eduardo Mendes (edumendes@gmail.com)
05 maneiras de utilizar jQuery
7
encontrar elementos no documento HTML
alterar conteúdo HTML
ouvir o que o usuário faz e reagir em conformidade
animar o conteúdo da página
comunicar-se pela rede para recuperar novos conteúdos
Eduardo Mendes (edumendes@gmail.com)8
Alterando o conteúdo
um documento HTML
<!DOCTYPE html>
<html>
<head>
<title>jQuery Festas</title>
</head>
<body>
<h1>O que eu quero fazer?</h1>
<p>Planejar minha próxima festa</p>
</body>
</html>
Como alterar o texto da tag <h1>?
encontre-o
altere-o
Eduardo Mendes (edumendes@gmail.com)9
Alterando o conteúdo
um documento HTML
<!DOCTYPE html>
<html>
<head>
<title>jQuery Festas</title>
</head>
<body>
<h1>O que eu quero fazer?</h1>
<p>Planejar minha próxima festa</p>
</body>
</html>
encontre-o
Como procurar um elemento/tag
HTML com jQuery?
Para isso precisamos entender como
um navegador organiza o seu conteúdo
Eduardo Mendes (edumendes@gmail.com)
Document Object Model
Os navegadores armazenam
os elementos de uma página HTML
em uma estrutura de árvores,
que permite encontrar e manipular
estes elementos através de JavaScript
10
DOM
Eduardo Mendes (edumendes@gmail.com)11
HTML -> DOM
um documento HTML
<!DOCTYPE html>
<html>
<head>
<title>jQuery Festas</title>
</head>
<body>
<h1>O que eu quero fazer?</h1>
<p>Planejar minha próxima festa</p>
</body>
</html>
DOM
navegador
0% 100%
Eduardo Mendes (edumendes@gmail.com)12
HTML -> DOM
um documento HTML
<!DOCTYPE html>
<html>
<head>
<title>jQuery Festas</title>
</head>
<body>
<h1>O que eu quero fazer?</h1>
<p>Planejar minha próxima festa</p>
</body>
</html>
DOCUMENT
html
head
titles
jQuery Festas
body
h1
O que eu quer…
p
Planejar minh…
Eduardo Mendes (edumendes@gmail.com)13
Como realizar uma busca na árvore DOM?
A árvore do DOM
DOCUMENT
html
head
titles
jQuery Festas
body
h1
O que eu quer…
p
Planejar minh…
JavaScript
JavaScript fornece
uma linguagem
capaz de interagir
com DOM
Eduardo Mendes (edumendes@gmail.com)14
Como realizar uma busca na árvore DOM?
navegador servidor web
JavaScript
DOM
JavaScript
Cada navegador
tem um DOM diferente
Eduardo Mendes (edumendes@gmail.com)15
Entretanto
JavaScript
DOM
DOM
DOM
DOM
Cada navegador
tem um DOM
diferente
Eduardo Mendes (edumendes@gmail.com)16
Entretanto
JavaScript
DOM
DOM
DOM
DOM
Um arquivo JS que utiliza jQuery
para se comunicar com o DOM,
será capaz de executar na maioria dos
navegadores modernos
Eduardo Mendes (edumendes@gmail.com)
jQuery Básico
17
Eduardo Mendes (edumendes@gmail.com)18
jQuery básico
JavaScri
jQuery(<code>);
função principal jQuery
Eduardo Mendes (edumendes@gmail.com)19
jQuery básico
JavaScri
jQuery(document);
O DOM
Como utilizar para encontrar algum elemento no DOM?
Eduardo Mendes (edumendes@gmail.com)20
para usar a função é preciso utilizar seletores CSS
Documento HTML
<!DOCTYPE html>
<html>
<head>
<title>jQuery Festas</title>
</head>
<body>
<h1>O que eu quero fazer?</h1>
<p>Planejar minha próxima festa</p>
</body>
</html>
Seletores CSS
h1 {font-size: 3em;}
p { color: red; }
Eduardo Mendes (edumendes@gmail.com)21
Utilizando funções jQuery para achar o nó
Documento HTML
<!DOCTYPE html>
<html>
<head>
<title>jQuery Festas</title>
</head>
<body>
<h1>O que eu quero fazer?</h1>
<p>Planejar minha próxima festa</p>
</body>
</html>
Seletores jQuery
jQuery(“h1”);
jQuery(“p”);
$(“h1”)
$(“p”)
==
short
Eduardo Mendes (edumendes@gmail.com)22
Alterando o conteúdo
um documento HTML
<!DOCTYPE html>
<html>
<head>
<title>jQuery Festas</title>
</head>
<body>
<h1>O que eu quero fazer?</h1>
<p>Planejar minha próxima festa</p>
</body>
</html>
Como alterar o texto da tag <h1>?
encontre-o
altere-o
Eduardo Mendes (edumendes@gmail.com)23
Selecione o elemento pelo seu nome HTML
um documento HTML
<!DOCTYPE html>
<html>
<head>
<title>jQuery Festas</title>
</head>
<body>
<h1>O que eu quero fazer?</h1>
<p>Planejar minha próxima festa</p>
</body>
</html>
DOCUMENT
html
head
titles
jQuery Festas
body
h1
O que eu quer…
p
Planejar minh…
Eduardo Mendes (edumendes@gmail.com)24
Selecione o elemento pelo seu nome HTML
DOCUMENT
html
head
titles
jQuery Festas
body
h1
O que eu quer…
p
Planejar minh…
$(“h1”);
Eduardo Mendes (edumendes@gmail.com)25
Selecione o elemento pelo seu nome HTML
DOCUMENT
html
head
titles
jQuery Festas
body
h1
O que eu quer…
p
Planejar minh…
$(“h1”);
Eduardo Mendes (edumendes@gmail.com)26
Recuperando o texto do elemento
DOCUMENT
html
head
titles
jQuery Festas
body
h1
O que eu quer…
p
Planejar minh…
$(“h1”).text();
método jQuery
"O que eu quero fazer?"
Eduardo Mendes (edumendes@gmail.com)27
Modificando o texto do elemento
DOCUMENT
html
head
titles
jQuery Festas
body
h1
O que eu quer…
p
Planejar minh…
$(“h1”).text(“Hello jQuery");
método jQuery
“Hello jQuery"
Eduardo Mendes (edumendes@gmail.com)28
Modificando o texto do elemento
DOCUMENT
html
head
title
jQuery Festas
body
h1
Hello jQuery
p
Planejar minh…
$(“h1”).text(“Hello jQuery");
método jQuery
“Hello jQuery"
Eduardo Mendes (edumendes@gmail.com)
DOM em 1.º Lugar
O JavaScript pode executar

antes do carregamento total do DOM
29
DOM
$(“h1”).text(“Hello jQuery");
0% 100%
50%
É preciso certificar-se que o DOM está 100% carregado
para executar jQuery com confiança
Eduardo Mendes (edumendes@gmail.com)
DOM em 1.º Lugar
É possível verificar o final do carregamento
30
DOM0% 100%
50%
"I'm ready"
Como ouvir este evento?
Após ouvir o evento execute o <codigo>
Eduardo Mendes (edumendes@gmail.com)31
Ouvindo o evento ready
jQuery(document).ready(function(){
<code>
});
DOM
"I'm ready"
O código só executará depois que
o DOM estiver "pronto"
Eduardo Mendes (edumendes@gmail.com)32
O código por inteiro
jQuery(document).ready(function(){
$(“h1”).text(“Hello jQuery”);
});
Eduardo Mendes (edumendes@gmail.com)
Utilizando jQuery
33
Eduardo Mendes (edumendes@gmail.com)34
Utilizando jQuery
dowload jQuery
carregue-o em seu documento HTML
<script src=“jquery.min.js”></script>
daí é só utilizar
<script src=“application.js”></script>
1
2
3
Eduardo Mendes (edumendes@gmail.com)35
Alterando múltiplos elementos
Como alterar o texto de cada elemento de lista (<li>) deste trecho de código?
<h1>Qual o tema da festa?</h1>
<h2>Temas de festas</h2>
<p>Planeje sua próxima festa</p>
<ul id="temas">
<li>Grécia antiga</li>
<li>Oscar</li>
<li class='promo'>White Party</li>
</ul>
$(“li”);
ache-os
altere-os
Eduardo Mendes (edumendes@gmail.com)36
Alterando múltiplos elementos
Como alterar o texto de cada elemento de lista (<li>) deste trecho de código?
<h1>Qual o tema da festa?</h1>
<h2>Temas de festas</h2>
<p>Planeje sua próxima festa</p>
<ul id="temas">
<li>Grécia antiga</li>
<li>Oscar</li>
<li class='promo'>White Party</li>
</ul>
$(“li”).text(“À fantasia”);
ache-os
altere-os
Eduardo Mendes (edumendes@gmail.com)37
Alterando múltiplos elementos
Como alterar o texto de cada elemento de lista (<li>) deste trecho de código?
<h1>Qual o tema da festa?</h1>
<h2>Temas de festas</h2>
<p>Planeje sua próxima festa</p>
<ul id="temas">
<li>À fantasia</li>
<li>À fantasia</li>
<li class='promo'>À fantasia</li>
</ul>
$(“li”).text(“À fantasia”);
ache-os
altere-os
Eduardo Mendes (edumendes@gmail.com)38
Outras formas de selecionar elementos
h1 {...}
CSS jQuery
$(“h1”);
#conteudo { . . . } $(“#conteudo”);
.temas {...} $(“.temas”);
Eduardo Mendes (edumendes@gmail.com)
Manipulando eventos
39
Eduardo Mendes (edumendes@gmail.com)40
Função como parâmetro
$(document).ready(<funcao de manipulacao de evento>);
O método ready recebe por parâmetro uma função como parâmetro
function(){
<code>
}
Definição de função
$(document).ready(function(){
<code>
});
Eduardo Mendes (edumendes@gmail.com)41
Drinks especiais
Eduardo Mendes (edumendes@gmail.com)42
Esperando um click
$(document).ready(function(){
<code>
});
<h3>Lemon Breeze</h3>
<p class="lemon">
Um drinks mais que saudavel, ...
<button>Consultar Preco</button>
</p>
$('button').on('click', function() {
!
!
});
Eduardo Mendes (edumendes@gmail.com)43
Esperando um click
$(document).ready(function(){
$('button').on('click', function() {
!
!
!
});
});
Eduardo Mendes (edumendes@gmail.com)44
Esperando um click
$(document).ready(function(){
$('button').on('click', function() {
!
!
!
});
});
var preco = $('<span>$399.99</span>');
$('.lemon').append(preco);
Eduardo Mendes (edumendes@gmail.com)45
Esperando um click
$(document).ready(function(){
$('button').on('click', function() {
!
!
!
});
});
var preco = $('<p>$399.99</p>');
$('.lemon').append(preco);
$('button').remove();
Eduardo Mendes (edumendes@gmail.com)46
Seletores descendentes
Como encontrar os elementos <li> questão em uma <ul> de ID “temas"?
<h1>Qual o tema da festa?</h1>
<h2>Temas de festas</h2>
<p>Planeje sua próxima festa</p>
<ul id="temas">
<li>Grécia antiga</li>
<li>Oscar</li>
<li class='promo'>White Party</li>
</ul>
seletor descendente
Eduardo Mendes (edumendes@gmail.com)47
Seletores descendentes
Como encontrar os elementos <li> questão em uma <ul> de ID “temas"?
<h1>Qual o tema da festa?</h1>
<h2>Temas de festas</h2>
<ul id="temas">
<li>Grécia antiga</li>
<li>Oscar</li>
<li class='promo'>White Party</li>
</ul>
$(“temas li”);
body
h1
Qual o tema…
ul
li
Grécia Antiga
h2
Temas de fes…
li
Oscar
li
White Party
Eduardo Mendes (edumendes@gmail.com)48
Seletores descendentes
Como encontrar somente os filhos diretos?
<h1>Qual o tema da festa?</h1>
<h2>Temas de festas</h2>
<ul id="temas">
<li>Europa</li>
<li>
<ul>
<li>Grécia</li>
</ul>
</li>
<li class='promo'>White Party</li>
</ul>
$(“temas li”);
body
h1
Qual o tema…
ul
li
Europa
h2
Temas de fes…
li
Grécia
li
White Party
ul
li
Eduardo Mendes (edumendes@gmail.com)49
Seletores descendentes
Como encontrar somente os filhos diretos?
<h1>Qual o tema da festa?</h1>
<h2>Temas de festas</h2>
<ul id="temas">
<li>Europa</li>
<li>
<ul>
<li>Grécia</li>
</ul>
</li>
<li class='promo'>White Party</li>
</ul>
body
h1
Qual o tema…
ul
li
Europa
h2
Temas de fes…
li
Grécia
li
White Party
ul
li
seletor de filho
Eduardo Mendes (edumendes@gmail.com)50
Seletores descendentes
Como encontrar somente os filhos diretos?
<h1>Qual o tema da festa?</h1>
<h2>Temas de festas</h2>
<ul id="temas">
<li>Europa</li>
<li>
<ul>
<li>Grécia</li>
</ul>
</li>
<li class='promo'>White Party</li>
</ul>
$(“temas > li”);
body
h1
Qual o tema…
ul
li
Europa
h2
Temas de fes…
li
Grécia
li
White Party
ul
li
Eduardo Mendes (edumendes@gmail.com)51
Selecionando múltiplos elementos
<h1>Qual o tema da festa?</h1>
<h2>Temas de festas</h2>
<ul id="temas">
<li>Europa</li>
<li>
<ul id="grecia">
<li>Grécia</li>
</ul>
</li>
<li class='promo'>White Party</li>
</ul>
$(“.promo, #grecia”);
body
h1
Qual o tema…
ul
ul
Europa
h2
Temas de fes…
Grécia
li
White Party
li
li
li
Eduardo Mendes (edumendes@gmail.com)52
Seletores com pseudo classes
$("#temas li:first").text("alterado");
$("#temas li:last").text("alterado");
$("#temas li:odd").text("alterado");
$("#temas li:even").text("alterado");
Eduardo Mendes (edumendes@gmail.com)
Transversing
53
Eduardo Mendes (edumendes@gmail.com)54
Filtros com transversing
$(“temas li”);
$(“temas”).find(“li”);
O código é maior,
mas é mais eficiente
$(“li:first”);
$(“li”).first();
$(“li:last”);
$(“li”).last();
Eduardo Mendes (edumendes@gmail.com)55
Caminhando no DOM
E como encontrar o elemento do meio?
<h1>Qual o tema da festa?</h1>
<h2>Temas de festas</h2>
<ul id="temas">
<li>Grécia antiga</li>
<li>Oscar</li>
<li class='promo'>White Party</li>
</ul>
Eduardo Mendes (edumendes@gmail.com)56
Caminhando no DOM
E como encontrar o elemento do meio?
$(“li”).first();
body
h1
Qual o tema…
ul
li
Grécia Antiga
h2
Temas de fes…
li
Oscar
li
White Party
Eduardo Mendes (edumendes@gmail.com)57
Caminhando no DOM
E como encontrar o elemento do meio?
$(“li”).first().next();
body
h1
Qual o tema…
ul
li
Grécia Antiga
h2
Temas de fes…
li
Oscar
li
White Party
Eduardo Mendes (edumendes@gmail.com)58
Caminhando no DOM
E como encontrar o elemento do meio?
$(“li”).first().prev();
body
h1
Qual o tema…
ul
li
Grécia Antiga
h2
Temas de fes…
li
Oscar
li
White Party
Eduardo Mendes (edumendes@gmail.com)59
Caminhando no DOM
Também é possível encontrar o elemento pai
$(“li”).first().parent();
body
h1
Qual o tema…
ul
li
Grécia Antiga
h2
Temas de fes…
li
Oscar
li
White Party
Eduardo Mendes (edumendes@gmail.com)60
Seletores descendentes
Como encontrar os filhos direto com transversing?
<h1>Qual o tema da festa?</h1>
<h2>Temas de festas</h2>
<ul id="temas">
<li>Europa</li>
<li>
<ul>
<li>Grécia</li>
</ul>
</li>
<li class='promo'>White Party</li>
</ul>
body
h1
Qual o tema…
ul
li
Europa
h2
Temas de fes…
li
Grécia
li
White Party
ul
li
$(“temas”).children(“li”);
Eduardo Mendes (edumendes@gmail.com)61
Caminhando no DOM
Como encontrar os filhos diretos utilizando transversing?
$(“temas”).children(“li”);
enquanto o método
find() seleciona
todos os <li>
o método children()
seleciona apenas os
<li> que são filhos
diretos
Eduardo Mendes (edumendes@gmail.com)
Trabalhando com DOM
62
Eduardo Mendes (edumendes@gmail.com)63
Anexando e Removendo no DOM
Eduardo Mendes (edumendes@gmail.com)64
Anexando um elemento ao DOM
anexar um novo nó no DOM
remover um nó do DOM
1
2
Eduardo Mendes (edumendes@gmail.com)65
Anexando um elemento ao DOM
$(document).ready(function(){
<code>
});
var preco = ”$399.99”;
var preco = ”<span>$399.99</span>”;
var preco = ”$(<span>$399.99</span>)";
span
$399.99
Não é HTML
Funciona, mas
é apenas uma String
Cria um nó manipulável
Eduardo Mendes (edumendes@gmail.com)66
Anexando um documento no DOM
$(document).ready(function(){
var preco = $('<span>$399.99</span>');
!
});
.append(<elemento>); .prepend(<elemento>);
.after(<elemento>); .before(<elemento>);
Eduardo Mendes (edumendes@gmail.com)67
HTML Original
Eduardo Mendes (edumendes@gmail.com)68
Before
$(document).ready(function(){
var preco = $('<span>$399.99</span>');
$('.lemon').before(preco);
});
Eduardo Mendes (edumendes@gmail.com)69
After
$(document).ready(function(){
var preco = $('<span>$399.99</span>');
$('.lemon').after(preco);
});
Eduardo Mendes (edumendes@gmail.com)70
Prepend
$(document).ready(function(){
var preco = $('<span>$399.99</span>');
$('.lemon').prepend(preco);
});
preco no topo
de .lemon
Eduardo Mendes (edumendes@gmail.com)71
Append
$(document).ready(function(){
var preco = $('<span>$399.99</span>');
$('.lemon').append(preco);
});
preco na base
de .lemon
Eduardo Mendes (edumendes@gmail.com)72
Anexando e removendo
$(document).ready(function(){
$('button').on('click', function() {
!
!
!
});
});
var preco = $('<p>$399.99</p>');
$('.lemon').append(preco);
$('button').remove();
Eduardo Mendes (edumendes@gmail.com)73
Anexando a partir do nó que se anexa
.appendTo(<elemento>); .prependTo(<elemento>);
.afterTo(<elemento>); .beforeTo(<elemento>);
$(document).ready(function(){
var preco = $('<span>$399.99</span>');
$('.lemon').append(preco);
});
preco.appendTo(”$(“.lemon”));
Eduardo Mendes (edumendes@gmail.com)
Trabalhando
com múltiplos elementos
74
Eduardo Mendes (edumendes@gmail.com)75
Trabalhando com múltiplos elementos
Eduardo Mendes (edumendes@gmail.com)76
Alterando a estrutura do código
Eduardo Mendes (edumendes@gmail.com)77
Alterando a estrutura do código
$(document).ready(function(){
$('button').on('click', function() {
!
!
!
});
});
var preco = $(‘<p>R$ 15,00</p>’);
$('.bebida').append(preco);
$('button').remove();
Eduardo Mendes (edumendes@gmail.com)78
Alterando a estrutura do código
Eduardo Mendes (edumendes@gmail.com)79
Uma introdução ao this
$(document).ready(function(){
$('button').on('click', function() {
!
!
!
});
});
var preco = $(‘<p>R$ 15,00</p>’);
$('.bebida').append(preco);
$('button').remove();
Quando o botão é clicado,
ele será o 'this'
Eduardo Mendes (edumendes@gmail.com)80
Apresentando o $(this)
Eduardo Mendes (edumendes@gmail.com)81
Corrigindo
$(document).ready(function(){
$('button').on('click', function() {
!
!
!
});
});
var preco = $(‘<p>R$ 15,00</p>’);
$('.bebida').append(preco);
$('button').remove();
this.remove();
$(this).remove();
Não é um objeto jQuery
OK! E removerá somente
o botão clivado
Eduardo Mendes (edumendes@gmail.com)82
Corrigindo
$(document).ready(function(){
$('button').on('click', function() {
!
!
!
});
});
var preco = $(‘<p>R$ 15,00</p>’);
$('.bebida').append(preco);
$(this).remove();
Eduardo Mendes (edumendes@gmail.com)83
Alterando a estrutura do código
Eduardo Mendes (edumendes@gmail.com)84
Alterando a estrutura do código
Eduardo Mendes (edumendes@gmail.com)85
Corrigindo
$(document).ready(function(){
$('button').on('click', function() {
!
!
!
});
});
var preco = $(‘<p>R$ 15,00</p>’);
$('.bebida').append(preco);
$(this).remove();
Eduardo Mendes (edumendes@gmail.com)86
Corrigindo
$(document).ready(function(){
$('button').on('click', function() {
!
!
!
});
});
var preco = $(‘<p>R$ 15,00</p>’);
$(this).after(preco);
$(this).remove();
Eduardo Mendes (edumendes@gmail.com)87
Comportamento correto
Eduardo Mendes (edumendes@gmail.com)88
E se o DOM for alterado
$(document).ready(function(){
$('button').on('click', function() {
!
!
});
});
var preco = $(‘<p>R$ 15,00</p>’);
$(this).after(preco);
$(this).remove();
O preço ficaria dentro
da <div> ao invés do <li>
Eduardo Mendes (edumendes@gmail.com)
89
Use .closest(<seletor>)
$(this).after(preco)
$(this).parent().parent().append(preco);
$(this).parents(“.bebida”).append(preco);
$(this).closest(“.bebida”).append(preco);
Retorna todos os ancestrais
com este seletor
Retorna apenas um nó
Eduardo Mendes (edumendes@gmail.com)
Adicionando dados
90
Eduardo Mendes (edumendes@gmail.com)91
Todas as bebidas têm o mesmo valor
Eduardo Mendes (edumendes@gmail.com)92
Adicionando um atributo data
<li class="bebida"
<p>
<img src="imagens/yellow.gif" />
</p>
<h3>Lemon Breeze</h3>
<p>Um drinks mais. . . <br/></p>
<button>Consultar Preco</button>
</li>
data-preco="15,00"> Este é um elemento faz parte
da HMTL5 que deve ser
utilizado para fornecer
informações adicionais
sobre os objetos das páginas
.data(<nome>)
.data(<nome>, <valor>)
$(‘.bebida’).first().data(‘preco');
“15,00”
Eduardo Mendes (edumendes@gmail.com)93
Refatorando o preco
$(document).ready(function(){
$('button').on('click', function() {
!
!
!
});
});
var preco = $(‘<p>R$ 15,00</p>’);
$('.bebida').append(preco);
$('button').remove();
var valor = $(this).closest(‘.bebida’).data(‘preco’);
var preco = $(‘<p>R$ ’ + valor + ‘</p>' );
Recupera o valor
do atributo data-preco
Concatenação das 02 Strings
Eduardo Mendes (edumendes@gmail.com)94
Refatorando o preco
Cada$(document).ready(function(){
$('button').on('click', function() {
var valor = $(this).closest(".bebida").data('preco');
var preco = $("<p>R$" + valor + "</p>");
$(this).closest(".bebida").append(preco);
$(this).remove();
});
});
Cada bebida terá
seu próprio preço
Eduardo Mendes (edumendes@gmail.com)95
Cada bebida com seu próprio preço
Eduardo Mendes (edumendes@gmail.com)96
Refatorando o preco
Cada
$(document).ready(function(){
$('button').on('click', function() {
var valor = $(this).closest(".bebida").data('preco');
var preco = $("<p>R$" + valor + "</p>");
$(this).closest(".bebida").append(preco);
$(this).remove();
});
});
var valor = bebida.data(‘preco’);
bebida.append(preco);
var bebida = $(this).closest(“.bebida”);
Eduardo Mendes (edumendes@gmail.com)
Refatorando o preco
Cada
$(document).ready(function(){
$('button').on('click', function() {
var bebida = $(this).closest(".bebida");
var valor = bebida.data('preco');
var preco = $("<p>R$" + valor + "</p>");
bebida.append(preco);
$(this).remove();
});
});
Eduardo Mendes (edumendes@gmail.com)
Adicionando mais elementos
98
Eduardo Mendes (edumendes@gmail.com)99
E se tivéssemos mais um grupo de botões?
Eduardo Mendes (edumendes@gmail.com)100
É necessário transversing + seletores
$(document).ready(function(){
$('button').on('click', function() {
. . .
});
});
$(‘#bebidas button').on('click', function() {});
$(‘#bebidas').on('click', ‘button’, function() {});
atinge somente os botoes
que estiverem um dentro de um
“#bebidas"
Eduardo Mendes (edumendes@gmail.com)
Filtrando
101
Eduardo Mendes (edumendes@gmail.com)102
Filtrando o HTML
<div id="filtros">
<button class="filtro-promo">Promocao do Dia</button>
<button class="filtro-sem-alcool">Sem Alcool</button>
</div>
Vamos adicionar dois tratadores de eventos
Vamos destacar as seções correspondentes quando clivados
Eduardo Mendes (edumendes@gmail.com)103
Filtrando bebidas em promoção
$("#filtros").on("click", ".filtro-promo", function() {
//encontrar todos os elementos <li> que estão
//promocao e adicionar uma classe a eles
});
<li class="bebida promo" data-preco="15,00">
<p>
<img src="imagens/yellow.gif" />
</p>
…
</li>
$(“.bebida”).filter(".promo") //
Eduardo Mendes (edumendes@gmail.com)104
Manipulação de classes
.addClass(<class>)
.removeClass(<class)
Eduardo Mendes (edumendes@gmail.com)105
Filtrando bebidas em promoção
$("#filtros").on("click", ".filtro-promo", function() {
$(".bebida").filter(".promo").addClass("destacada");
});
apenas bebidas em promoção adiciona a classe destacada
A mesma coisa para a outra classe
$("#filtros").on('click', '.filtro-sem-alcool', function() {
$(".bebida").filter(".sem-alcool").addClass("destacada");
});
Eduardo Mendes (edumendes@gmail.com)106
Bebidas destacadas
Eduardo Mendes (edumendes@gmail.com)
Qual a solução?
107
Eduardo Mendes (edumendes@gmail.com)108
Remover a classe que destaca
$("#filtros").on("click", ".filtro-promo", function() {
$(".destacada").removeClass("destacada");
$(".bebida").filter(".promo").addClass("destacada");
});
!
$("#filtros").on('click', '.filtro-sem-alcool', function() {
$(".destacada").removeClass("destacada");
$(".bebida").filter(".sem-alcool").addClass("destacada");
});
Eduardo Mendes (edumendes@gmail.com)109
Bebidas destacadas
Eduardo Mendes (edumendes@gmail.com)
Revelando elementos
110
Eduardo Mendes (edumendes@gmail.com)111
Página de receitas
Eduardo Mendes (edumendes@gmail.com)112
Apresentando a receita
<ul id="bebidas">
<li class="bebida promo" data-preco="15,00">
<h3>Lemon Breeze</h3>
<button>Receita completa</button>
<ul class="receita">
<li>Passo 1</li>
<li>Passo 2</li>
<li>Passo 3</li>
</ul>
</li>
.receita { display: none; }
Eduardo Mendes (edumendes@gmail.com)113
Apresentando a receita
<ul id="bebidas">
<li class="bebida promo" data-preco="15,00">
<h3>Lemon Breeze</h3>
<button>Receita completa</button>
<ul class="receita">
<li>Passo 1</li>
<li>Passo 2</li>
<li>Passo 3</li>
</ul>
</li>
.slideDown() .slideUp() .slideToggle()
Eduardo Mendes (edumendes@gmail.com)114
Apresentando a receita
<ul id="bebidas">
<li class="bebida promo" data-preco="15,00">
<h3>Lemon Breeze</h3>
<button>Receita completa</button>
<ul class="receita">
<li>Passo 1</li>
<li>Passo 2</li>
<li>Passo 3</li>
</ul>
</li>
Quando clicar
no <button>
aparecer a
<ul> receita
$(".bebida").on("click", "button", function() {
$(this).closest(".bebida").find(".receita").slideDown ();
});
Eduardo Mendes (edumendes@gmail.com)115
Outro evento
Aparecer quando passarmos o mouse por cima do nome da bebida
Eduardo Mendes (edumendes@gmail.com)
116
Escolhendo o evento
$(".bebida").on("click", "button", function() {
$(this).closest(".bebida").find(".receita").slideDown ();
});
!
$(“.bebida").on("?", "h3", function() {
$(this).closest(".bebida").find(".receita").slideDown ();
});
click
dbclick
focusin
focusout
mousedown
mouseup
mousemove
mouseout
mouseenter
mouseleave
diferenças em: http://www.quirksmode.org/js/events_mouse.html
Eduardo Mendes (edumendes@gmail.com)
Escolhendo o evento
$(".bebida").on("click", "button", function() {
$(this).closest(".bebida").find(".receita").slideDown ();
});
!
$(“.bebida").on("mouseenter", "h3", function() {
$(this).closest(".bebida").find(".receita").slideDown ();
});
Eduardo Mendes (edumendes@gmail.com)118
Ok!
Aparecer quando passarmos o mouse por cima do nome da bebida
Eduardo Mendes (edumendes@gmail.com)
Mais uma refatoração
$(".bebida").on("click", "button", function() {
$(this).closest(".bebida").find(".receita").slideDown ();
});
!
$(“.bebida").on("mouseenter", "h3", function() {
$(this).closest(".bebida").find(".receita").slideDown ();
});
function exibirReceita(){
$(this).closest(".bebida").find(".receita").slideDown();
});
Eduardo Mendes (edumendes@gmail.com)
Eventos do teclado
120
Eduardo Mendes (edumendes@gmail.com)121
Atualizando dados
Eduardo Mendes (edumendes@gmail.com)122
Eventos de teclado
<div class="bebida" data-preco="15">
<h3>Lemon Breeze</h3>
<p>R$ 15,00 por cada</p>
<input type="text" class="quantidade" value="1" />
</p>
<p>Preço total: R$ <span id="total">R$ 15</span>,00</p>
</div>
quando for alterado
alterar também o total
Eduardo Mendes (edumendes@gmail.com)123
Eventos de teclado
$(“.bebida”).on("???", ".quantidade", function() {
!
!
});
keypress keydown keyup
http://api.jquery.com/category/events/keyboard-events/
Eduardo Mendes (edumendes@gmail.com)124
Eventos de teclado
$(“.bebida”).on("keyup", ".quantidade", function() {
!
!
!
});
// Recuperar o preço da bebida
// Recuperar a quantidade de bebida
// Modificar o total para preço * quantidade
var preco = $(this).closest(".bebida").data("preco");
"15"
var preco = +$(this).closest(".bebida").data("preco");
15
Eduardo Mendes (edumendes@gmail.com)125
Eventos de teclado
$(“.bebida”).on("keyup", ".quantidade", function() {
!
!
!
});
var preco = +$(this).closest(".bebida").data("preco");
// Recuperar a quantidade de bebida
// Modificar o total para preço * quantidade
var quantidade = $this).val();
"2"
var quantidade = +$(this).val();
2
Eduardo Mendes (edumendes@gmail.com)126
Eventos de teclado
$(“.bebida”).on("keyup", ".quantidade", function() {
!
!
!
});
var preco = +$(this).closest(".bebida").data("preco");
var quantidade = +$(this).val();
// Modificar o total para preço * quantidade
$("#total").text(preco * quantidade);
Eduardo Mendes (edumendes@gmail.com)127
Eventos de teclado
$(“.bebida”).on("keyup", ".quantidade", function() {
!
!
!
});
var preco = +$(this).closest(".bebida").data("preco");
var quantidade = +$(this).val();
$("#total").text(preco * quantidade);
Assim o valor atualizará
imeditamente

Mais conteúdo relacionado

Destaque

Java Web 4 - Servlets e JSP 2
Java Web 4 - Servlets e JSP 2Java Web 4 - Servlets e JSP 2
Java Web 4 - Servlets e JSP 2Eduardo Mendes
 
Turbinando o desenvolvimento com Eclipse
Turbinando o desenvolvimento com EclipseTurbinando o desenvolvimento com Eclipse
Turbinando o desenvolvimento com EclipseMarcos Sousa
 
Introdução à Linguagem Ruby - Fundamentos - Parte 2
 Introdução à Linguagem Ruby - Fundamentos - Parte 2 Introdução à Linguagem Ruby - Fundamentos - Parte 2
Introdução à Linguagem Ruby - Fundamentos - Parte 2Eduardo Mendes
 
Engenharia de Requisitos
Engenharia de RequisitosEngenharia de Requisitos
Engenharia de RequisitosEduardo Mendes
 
Teste de Software - parte 1
Teste de Software - parte 1Teste de Software - parte 1
Teste de Software - parte 1Eduardo Mendes
 
The Power of Collaboration to Build Your Own Startup
The Power of Collaboration to Build Your Own StartupThe Power of Collaboration to Build Your Own Startup
The Power of Collaboration to Build Your Own StartupTaufan Erfiyanto
 
Evolucao de software - parte 2
Evolucao de software - parte 2Evolucao de software - parte 2
Evolucao de software - parte 2Eduardo Mendes
 
Desenvolvimento web com PHP parte 4
Desenvolvimento web com PHP parte 4Desenvolvimento web com PHP parte 4
Desenvolvimento web com PHP parte 4Eduardo Mendes
 
Desenvolvimento web com PHP parte 3
Desenvolvimento web com PHP parte 3Desenvolvimento web com PHP parte 3
Desenvolvimento web com PHP parte 3Eduardo Mendes
 
Acesso a banco de dados com JDBC
Acesso a banco de dados com JDBCAcesso a banco de dados com JDBC
Acesso a banco de dados com JDBCEduardo Mendes
 
Desenvolvimento Web com PHP parte 7
Desenvolvimento Web com PHP parte 7Desenvolvimento Web com PHP parte 7
Desenvolvimento Web com PHP parte 7Eduardo Mendes
 
Evolucao de software - parte 1
Evolucao de software - parte 1Evolucao de software - parte 1
Evolucao de software - parte 1Eduardo Mendes
 
TDD - Prática com RSpec
TDD - Prática com RSpecTDD - Prática com RSpec
TDD - Prática com RSpecEduardo Mendes
 
Testes de Software parte 2
Testes de Software parte 2Testes de Software parte 2
Testes de Software parte 2Eduardo Mendes
 

Destaque (20)

Introdução ao TDD
Introdução ao TDDIntrodução ao TDD
Introdução ao TDD
 
RSpec com doubles
RSpec com doublesRSpec com doubles
RSpec com doubles
 
Java Web 4 - Servlets e JSP 2
Java Web 4 - Servlets e JSP 2Java Web 4 - Servlets e JSP 2
Java Web 4 - Servlets e JSP 2
 
Html Aula 1 - parte 2
Html Aula 1 - parte 2Html Aula 1 - parte 2
Html Aula 1 - parte 2
 
Turbinando o desenvolvimento com Eclipse
Turbinando o desenvolvimento com EclipseTurbinando o desenvolvimento com Eclipse
Turbinando o desenvolvimento com Eclipse
 
Rails - parte 1
Rails - parte 1Rails - parte 1
Rails - parte 1
 
Introdução à Linguagem Ruby - Fundamentos - Parte 2
 Introdução à Linguagem Ruby - Fundamentos - Parte 2 Introdução à Linguagem Ruby - Fundamentos - Parte 2
Introdução à Linguagem Ruby - Fundamentos - Parte 2
 
Engenharia de Requisitos
Engenharia de RequisitosEngenharia de Requisitos
Engenharia de Requisitos
 
Teste de Software - parte 1
Teste de Software - parte 1Teste de Software - parte 1
Teste de Software - parte 1
 
The Power of Collaboration to Build Your Own Startup
The Power of Collaboration to Build Your Own StartupThe Power of Collaboration to Build Your Own Startup
The Power of Collaboration to Build Your Own Startup
 
Academia java intensivo
Academia java intensivoAcademia java intensivo
Academia java intensivo
 
Evolucao de software - parte 2
Evolucao de software - parte 2Evolucao de software - parte 2
Evolucao de software - parte 2
 
Desenvolvimento web com PHP parte 4
Desenvolvimento web com PHP parte 4Desenvolvimento web com PHP parte 4
Desenvolvimento web com PHP parte 4
 
Desenvolvimento web com PHP parte 3
Desenvolvimento web com PHP parte 3Desenvolvimento web com PHP parte 3
Desenvolvimento web com PHP parte 3
 
Acesso a banco de dados com JDBC
Acesso a banco de dados com JDBCAcesso a banco de dados com JDBC
Acesso a banco de dados com JDBC
 
Desenvolvimento Web com PHP parte 7
Desenvolvimento Web com PHP parte 7Desenvolvimento Web com PHP parte 7
Desenvolvimento Web com PHP parte 7
 
Evolucao de software - parte 1
Evolucao de software - parte 1Evolucao de software - parte 1
Evolucao de software - parte 1
 
TDD - Prática com RSpec
TDD - Prática com RSpecTDD - Prática com RSpec
TDD - Prática com RSpec
 
AngularJS - Rotas
AngularJS - RotasAngularJS - Rotas
AngularJS - Rotas
 
Testes de Software parte 2
Testes de Software parte 2Testes de Software parte 2
Testes de Software parte 2
 

Semelhante a Jquery (20)

Programação Web com jQuery
Programação Web com jQueryProgramação Web com jQuery
Programação Web com jQuery
 
Curso de Java (Parte 6) Introdução a Front-end
Curso de Java (Parte 6) Introdução a Front-endCurso de Java (Parte 6) Introdução a Front-end
Curso de Java (Parte 6) Introdução a Front-end
 
ExtJS-4
ExtJS-4ExtJS-4
ExtJS-4
 
jQuery - A biblioteca javascript
jQuery - A biblioteca javascriptjQuery - A biblioteca javascript
jQuery - A biblioteca javascript
 
jQuery na Prática - Cauê Fajoli
jQuery na Prática - Cauê FajolijQuery na Prática - Cauê Fajoli
jQuery na Prática - Cauê Fajoli
 
JavaScript - Introdução com Orientação a Objetos
JavaScript - Introdução com Orientação a ObjetosJavaScript - Introdução com Orientação a Objetos
JavaScript - Introdução com Orientação a Objetos
 
Práticas para Melhorar o seu Desenvolvimento Front-End
Práticas para Melhorar o seu Desenvolvimento Front-EndPráticas para Melhorar o seu Desenvolvimento Front-End
Práticas para Melhorar o seu Desenvolvimento Front-End
 
Curso de HTML5 CSS3 e JS
Curso de HTML5 CSS3 e JSCurso de HTML5 CSS3 e JS
Curso de HTML5 CSS3 e JS
 
Programação Web com jQuery
Programação Web com jQueryProgramação Web com jQuery
Programação Web com jQuery
 
Aula html5
Aula html5Aula html5
Aula html5
 
Introdução de web
Introdução de webIntrodução de web
Introdução de web
 
jQuery
jQueryjQuery
jQuery
 
jQuery
jQueryjQuery
jQuery
 
Java script aula 06 - dom
Java script   aula 06 - domJava script   aula 06 - dom
Java script aula 06 - dom
 
Apresentação para aula de HTML básico
Apresentação para aula de HTML básicoApresentação para aula de HTML básico
Apresentação para aula de HTML básico
 
CSS
CSSCSS
CSS
 
HTML e CSS para pequenas gafanhotas
HTML e CSS para pequenas gafanhotasHTML e CSS para pequenas gafanhotas
HTML e CSS para pequenas gafanhotas
 
Web em grande estilo com CSS 3
Web em grande estilo com CSS 3Web em grande estilo com CSS 3
Web em grande estilo com CSS 3
 
Componentes para a Web
Componentes para a WebComponentes para a Web
Componentes para a Web
 
Html5 ass
Html5 assHtml5 ass
Html5 ass
 

Mais de Eduardo Mendes

Angular JS - Fundamentos
Angular JS - FundamentosAngular JS - Fundamentos
Angular JS - FundamentosEduardo Mendes
 
Singleton - Padrão de Projeto
Singleton - Padrão de ProjetoSingleton - Padrão de Projeto
Singleton - Padrão de ProjetoEduardo Mendes
 
Introdução à Internet, Http e HTML
Introdução à Internet, Http e HTMLIntrodução à Internet, Http e HTML
Introdução à Internet, Http e HTMLEduardo Mendes
 
Estimativas de Esforço - Engenharia de Software
Estimativas de Esforço - Engenharia de SoftwareEstimativas de Esforço - Engenharia de Software
Estimativas de Esforço - Engenharia de SoftwareEduardo Mendes
 
Java web 6 JSP Expression Language Taglib parte 2
Java web 6 JSP Expression Language Taglib parte 2Java web 6 JSP Expression Language Taglib parte 2
Java web 6 JSP Expression Language Taglib parte 2Eduardo Mendes
 
Validações no Ruby on Rails
Validações no Ruby on Rails Validações no Ruby on Rails
Validações no Ruby on Rails Eduardo Mendes
 
Padroes Template-Method (Método Gabarito)
Padroes Template-Method (Método Gabarito)Padroes Template-Method (Método Gabarito)
Padroes Template-Method (Método Gabarito)Eduardo Mendes
 
PHP básico para iniciantes
PHP básico para iniciantesPHP básico para iniciantes
PHP básico para iniciantesEduardo Mendes
 
PHP e MySQL para iniciantes
PHP e MySQL para iniciantesPHP e MySQL para iniciantes
PHP e MySQL para iniciantesEduardo Mendes
 
Introdução a Padrões de Projeto
Introdução a Padrões de ProjetoIntrodução a Padrões de Projeto
Introdução a Padrões de ProjetoEduardo Mendes
 
Strategy - Padrões de Projeto
Strategy - Padrões de ProjetoStrategy - Padrões de Projeto
Strategy - Padrões de ProjetoEduardo Mendes
 
Decorator - Padrões de projeto
Decorator - Padrões de projetoDecorator - Padrões de projeto
Decorator - Padrões de projetoEduardo Mendes
 

Mais de Eduardo Mendes (20)

Angular JS - Fundamentos
Angular JS - FundamentosAngular JS - Fundamentos
Angular JS - Fundamentos
 
Singleton - Padrão de Projeto
Singleton - Padrão de ProjetoSingleton - Padrão de Projeto
Singleton - Padrão de Projeto
 
Layout Fluido
Layout FluidoLayout Fluido
Layout Fluido
 
Web Design Responsivo
Web Design ResponsivoWeb Design Responsivo
Web Design Responsivo
 
Introdução à Internet, Http e HTML
Introdução à Internet, Http e HTMLIntrodução à Internet, Http e HTML
Introdução à Internet, Http e HTML
 
Jquery 2
Jquery 2Jquery 2
Jquery 2
 
Estimativas de Esforço - Engenharia de Software
Estimativas de Esforço - Engenharia de SoftwareEstimativas de Esforço - Engenharia de Software
Estimativas de Esforço - Engenharia de Software
 
Java web 6 JSP Expression Language Taglib parte 2
Java web 6 JSP Expression Language Taglib parte 2Java web 6 JSP Expression Language Taglib parte 2
Java web 6 JSP Expression Language Taglib parte 2
 
Validações no Ruby on Rails
Validações no Ruby on Rails Validações no Ruby on Rails
Validações no Ruby on Rails
 
Padrão Iterator
Padrão IteratorPadrão Iterator
Padrão Iterator
 
Padroes Template-Method (Método Gabarito)
Padroes Template-Method (Método Gabarito)Padroes Template-Method (Método Gabarito)
Padroes Template-Method (Método Gabarito)
 
Padrão Command
Padrão CommandPadrão Command
Padrão Command
 
Padrão Fachada
Padrão FachadaPadrão Fachada
Padrão Fachada
 
Padrão Adapter
Padrão AdapterPadrão Adapter
Padrão Adapter
 
Web Design Responsivo
Web Design ResponsivoWeb Design Responsivo
Web Design Responsivo
 
PHP básico para iniciantes
PHP básico para iniciantesPHP básico para iniciantes
PHP básico para iniciantes
 
PHP e MySQL para iniciantes
PHP e MySQL para iniciantesPHP e MySQL para iniciantes
PHP e MySQL para iniciantes
 
Introdução a Padrões de Projeto
Introdução a Padrões de ProjetoIntrodução a Padrões de Projeto
Introdução a Padrões de Projeto
 
Strategy - Padrões de Projeto
Strategy - Padrões de ProjetoStrategy - Padrões de Projeto
Strategy - Padrões de Projeto
 
Decorator - Padrões de projeto
Decorator - Padrões de projetoDecorator - Padrões de projeto
Decorator - Padrões de projeto
 

Jquery