2ba0d8e67f6d905a77b92b3d9c3a099d.ppt
- Количество слайдов: 80
j. Query na Prática vitorfs. com/jquery-na-pratica
Vitor Freitas vitorfs@gmail. com github. com/vitorfs
Agenda • • • Introdução ao Java. Script e j. Query Fundamentos de Java. Script Document Object Model (DOM) Preparando o Ambiente Seletores j. Query Manipulando CSS Manipulando Conteúdo Eventos Animação Funções j. Query Ajax Formulários
Introdução ao Java. Script e j. Query
Em 1995 nasce o Java. Script VBSCRIPT MOCHA LIVESCRIPT JAVASCRIPT
Java. Script hoje
Por que usar j. Query? j. Query é uma camada de abstração Use j. Query porque. . . é fácil. . . é produtivo. . . browsers são incompatíveis. . . seus usuários utilizam browsers antigos
j. Query não é nenhuma panacéia • Você ainda precisa de Java. Script • j. Query é pesado • Construa agora, melhore depois
Fundamentos de Java. Script
Criando variáveis Dê nome aos dados var titulo = “j. Query na Prática”; • Palavra reservada: var • Nomes de variáveis normalmente em snake_case • Linha termina em ponto e vírgula ( ; )
Variáveis e dados • Tipagem fraca, dinâmica e implícita var numero = 100; (int) var titulo = “j. Query na Prática”; (string) var quantidade = 5. 7; (float) var erro = true; (boolean)
Funções function soma (num 1, num 2) { var resultado; resultado = num 1 + num 2; return resultado; } • Palavra reservada: function • Nomes de funções normalmente em camel. Case • Linha termina em ponto e vírgula ( ; )
Funções globais do Java. Script alert(“Olá, mundo!”); void var resposta = confirm(“Confirmar exclusão do registro? ”); Retorna boolean var idade = prompt(“Informe sua idade: ”); Retorna string
Funções de string var titulo = “j. Query na Prática”; titulo. to. Lower. Case(); “jquery na prática” titulo. to. Upper. Case(); “JQUERY NA PRÁTICA” titulo. char. At(2); “u” titulo. replace(“a”, “ 4”); titulo. split(“ ”); “j. Query n 4 Prátic 4” [“j. Query”, “na”, “Prática”]
Operações numéricas 10 + 5; 15 10 / 2; 5 parse. Int(“ 10 reais”); 10 var num = 10; num. to. String(); “ 10”
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)
Document Object Model (DOM)
DOM
Vitor Freitas
- JS
- DOM
- j. Query
DOM html head body title h 1#titulo p. autor j. Query na Prática Curso de j. Query Vitor Freitas ul li li li JS DOM j. Query
Preparando o Ambiente
http: //jquery. com
Carregando j. Query
Verificando se o j. Query está carregado j. Query; Reference. Error: j. Query is not defined (j. Query não está carregado) j. Query; 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 j. Query!)
Seletores j. Query $(“h 1”); (Nome do elemento) DOM html body h 1 j. Query na Prática p. autor Vitor Freitas p#rodape vitorfs. com/jquery-na-pratica
Seletores j. Query $(“p”); (Nome do elemento) DOM html body h 1 j. Query na Prática p. autor Vitor Freitas p#rodape vitorfs. com/jquery-na-pratica
Seletores j. Query $(“p. autor”); (Elemento +. + Classe) DOM html body h 1 j. Query na Prática p. autor Vitor Freitas p#rodape vitorfs. com/jquery-na-pratica
Seletores j. Query $(“. autor”); (Somente a classe) DOM html body h 1 j. Query na Prática p. autor Vitor Freitas p#rodape vitorfs. com/jquery-na-pratica
Seletores j. Query $(“p#rodape”); (Elemento + # + Id) DOM html body h 1 j. Query na Prática p. autor Vitor Freitas p#rodape vitorfs. com/jquery-na-pratica
Resultado da Seleção j. Query $(“p”); DOM p. autor Vitor Freitas p#rodape vitorfs. com/jquery-na-pratica Java. Script [“
Vitor Freitas
”, “vitorfs. com/jquery-napratica
”]
Resultado da Seleção j. Query $(“h 1, p#rodape”); Errado! $(“h 1”, “p#rodape”); DOM h 1 j. Query na Prática p#rodape vitorfs. com/jquery-na-pratica Java. Script [“
vitorfs. com/jquery-napratica
”]
Espaço em branco $(“p#rodape”); Elemento p com id rodape $(“p #rodape”); Elemento com id rodape dentro do elemento p
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”);
Seletores css também são válidos $(“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”
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
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)
Manipulando CSS
Manipulando CSS
Lorem ipsum dolor sit amet
$(”p”). css(”font-size”); // retorna o valor do font-size do elemento p $(”p”). css(”font-size”, ” 12 px”); // define o font-size do elemento p para 12 px
Definindo múltiplos atributos Utilizando métodos encadeados $(“p”). css(“font-size”, “ 24 px”). css(“font-weight”, “bold”). css(“line-height”, “ 32 px”); Ou um map $(“p”). css({“font-size”: “ 24 px”, “font-weight”: “bold”, “line-height”: “ 32 px”});
Mas. . . vamos com calma HTML Conteúdo CSS Apresentação Java. Script Interação
Interface CSS • DOM e CSS comunicam via IDs e Classes • Use. css() com cautela • Manipule IDs e Classes • Mais seguro e manutenível
Manipulando classes $(“p”). has. Class(“autor”); // retorna true ou false $(“p”). add. Class(“bigger”); $(“p”). remove. Class(“bigger”); // remove a classe passada via parâmetro $(“p”). remove. Class(); // remove todas as classes $(“p”). toggle. Class(“bigger”); // se o elemento tiver a classe bigger, o j. Query remove. Se não tiver, adiciona
Visibilidade $(“p. autor”). hide(); [
Vitor Freitas
] $(“p. autor”). show(); [Vitor Freitas
] $(“p. autor”). toggle(); Alterna entre hide e show
Manipulando Conteúdo
Template
- Fundamentos Java. Script
- DOM
- j. Query
Data: 21/01 à 25/01
Horário: 19: 00 às 22: 40
Acessando text e html • html Recupera todo conteúdo dentro do elemento selecionado, inclusive as tags HTML $(“p: first”). html(); [“Data: 21/01 à 25/01”] • text Recupera todo texto dentro do elemento selecionado, ignorando as tags HTML $(“p: first”). text(); [“Data: 21/01 à 25/01”]
Definindo text $(“span. data”). text(“ 28/01 à 01/02”); 21/01 à 25/01 class=“data”>28/01 01/02 Cronograma • Fundamentos Java. Script • DOM • j. Query Data: 21/01 à 25/01 28/01 01/02 Horário: 19: 00 às 22: 40
Definindo text $(“span. data”). text(“28/01 à 01/02”); 21/01 à 25/01 class=“data”>< u> 28/01 à 01/02< /u> Cronograma • Fundamentos Java. Script • DOM • j. Query Data: 21/01 à 25/01 28/01 à 01/02 Horário: 19: 00 às 22: 40
Definindo html $(“span. data”). html(“28/01 à 01/02”); 21/01 à 25/01 class=“data”>28/01 à 01/02 Cronograma • Fundamentos Java. Script • DOM • j. Query Data: 21/01 à 25/01 28/01 01/02 Horário: 19: 00 às 22: 40
Inserindo html no DOM $(“ul”). append(“
Append $(“ul”). append(“
Prepend $(“ul”). prepend(“
Before $(“ul”). before(“
After $(“ul”). after(“
Eventos
Como funciona
- !
- Fundamentos Java. Script Click
- DOM
- j. Query
Data: 21/01 à 25/01
Horário: 19: 00 às 22: 40
Timing
- Fundamentos Java. Script
- DOM
- j. Query
Data: 21/01 à 25/01
Horário: 19: 00 às 22: 40
Timing
- Fundamentos Java. Script
- DOM
- j. Query
Data: 21/01 à 25/01
Horário: 19: 00 às 22: 40
DOM está pronto!
Document Ready
- Fundamentos Java. Script
- DOM
- j. Query
Data: 21/01 à 25/01
Horário: 19: 00 às 22: 40
Documento está pronto!
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
Click function esconder() { $(“p”). hide(); } $(“p”). click(esconder); Normalmente utilizamos funções anônimas $(“p”). click(function () { $(“p”). hide(); });
Hover. destacar { background: yellow; } $(“p”). hover(function () { $(this). add. Class(“destacar”); }); Data: 21/01 à 25/05 Horário: 19: 00 às 22: 40
Hover. destacar { background: yellow; } $(“p”). hover( function () { $(this). add. Class(“destacar”); }, function () { $(this). remove. Class(“destacar”); } ); Data: 21/01 à 25/05 Horário: 19: 00 às 22: 40
Hover. destacar { background: yellow; } $(“p”). hover(function () { $(this). toggle. Class(“destacar”); }); Data: 21/01 à 25/05 Horário: 19: 00 às 22: 40
Eventos de Teclado $(“input”). keydown(); //Dispara ao apertar a tecla $(“input”). keypress(); //Dispara ao pressionar a tecla $(“input”). keyup(); //Dispara ao soltar a tecla
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
Objeto event $(“body”). keypress(function (event) { }); event. which; // código númerico da tecla pressionada event. prevent. Default(); // evita a ação padrão do browser event. stop. Propagation(); // evita propagação do evento no DOM
Animação
Animações slide. Up([duração][, callback]); duração – Tempo da animação em milisegundos – Default 400 milisegundos – Aceita parâmetros “slow” (600 ms) e “fast” (200 ms) callback – Função que será executada após o término da animação
slide. Up, slide. Down e slide. Toggle $(“p”). slide. Up(“slow”); $(“p”). slide. Up(1000, function () { alert(“Concluiu a animação!”); }); $(“p”). slide. Down(“fast”); $(“p”). slide. Toggle();
Animações fade • Utiliza os mesmos parâmetros do slide $(“p”). fade. In(“slow”); $(“p”). fade. In(1000, function () { alert(“Concluiu a animação!”); }); $(“p”). fade. Out(“fast”); $(“p”). fade. Toggle();
Funções j. Query
Adicionando funções customizadas $. fn. vazio = function () { var value = $(this). val(); if (value == “”) { return true; } else { return false; } }; $(“input”). vazio();
Ajax
XMLHttp. Request • Requisições assíncronas por trás dos panos $. ajax({ url: ‘usuarios. php’, data: { id: “ 10”, acao: “editar” }, cache: false, type: “POST”, before. Send: 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 } });
load Permite especificar um elemento para receber a resposta e uma função de callback $('#resultado'). load(‘usuarios. php‘); // A resposta da requisição à página usuarios. php é inserida dentro do elemento #resultado $('#resultado'). load(‘usuarios. php‘, function () { // Executa após terminar a requisição }); $('#resultado'). load(‘usuarios. php‘, { id: 10 } function () { // Executa após terminar a requisição });
post $. post(url [, data] [, success(data, text. Status, jq. XHR)] [, data. Type]) O método post do j. Query corresponde à seguinte implementação: $. ajax({ type: "POST", url: url, data: data, success: success, data. Type: data. Type }); $. post(“login. php”, { usuario: “vitorfs”, senha: “ 123456” }); $. post(“login. php”, $(“form”). serialize(), function () { // Executa callback });
get $. get(url [, data] [, success(data, text. Status, jq. XHR)] [, data. Type]) O método get do j. Query corresponde à seguinte implementação: $. ajax({ url: url, data: data, success: success, data. Type: data. Type }); $. get(“cidades. php”, { uf: “mg” }, function (data) { $(“select”). html(data); });
Formulários
Serializando formulários
Serializando em array $(“#cadastro”). serialize. Array(); [ { name = “nome”, value = “vitor” }, { name = “email”, value = “vitorfs@gmail. com” }, { name = “cpf”, value = “ 123456789012” } ]


