09.11.2017 Views

jQuery na Prática

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

<strong>jQuery</strong> <strong>na</strong> <strong>Prática</strong> (http://vitorfs.com/jquery-<strong>na</strong>-pratica)<br />

Home (index.html) Sobre (sobre.html) Downloads (downloads.html)<br />

GitHub (http://github.com/vitorfs/jquery-<strong>na</strong>-pratica)<br />

Fundamentos JavaScript<br />

Seletores <strong>jQuery</strong><br />

Manipulando CSS<br />

Manipulando Conteúdo<br />

Eventos<br />

Animação<br />

Funções <strong>jQuery</strong><br />

Ajax<br />

Formulários<br />

Fundamentos JavaScript<br />

Experiência em programação com linguagens como C, Visual Basic ou Java é útil, mas não obrigatório.<br />

Variáveis<br />

Dê nome aos dados utilizando a palavra reservada var . Normalmente o nome da variável é escrita em<br />

s<strong>na</strong>ke_case . Linha termi<strong>na</strong> em ponto e vírgula.<br />

var titulo = "<strong>jQuery</strong> <strong>na</strong> <strong>Prática</strong>";<br />

JavaScript é uma linguagem de tipagem fraca, dinâmica e implícita.<br />

var numero = 100;<br />

//int<br />

var titulo = "<strong>jQuery</strong> <strong>na</strong> <strong>Prática</strong>"; //string<br />

var quantidade = 5.7;<br />

//float<br />

var erro = true;<br />

//boolean<br />

Funções<br />

Crie funções utilizando a palavra reservada function . Normalmente o nome da função é escrita em camelCase .


function soma (num1, num2) {<br />

var resultado;<br />

resultado = num1 + num2;<br />

return resultado;<br />

}<br />

Funções Globais<br />

A função alert exibe um pop-up no browser do usuário com a mensagem passada via parâmetro.<br />

alert("Olá, mundo!");<br />

A função confirm exibe uma caixa de confirmação ao usuário. Retor<strong>na</strong> true ou false .<br />

var resposta = confirm("Confirmar exclusão do registro?");<br />

A função prompt retor<strong>na</strong> o valor informado pelo usuário em forma de string<br />

var idade = prompt("Informe sua idade:");<br />

Funções de String<br />

charAt Retor<strong>na</strong> o char no índice especificado.<br />

var titulo = "<strong>jQuery</strong> <strong>na</strong> <strong>Prática</strong>";<br />

titulo.charAt(2); // "u"<br />

concat Combi<strong>na</strong> o texto de duas strings e retor<strong>na</strong> uma nova string.<br />

contains Determi<strong>na</strong> se uma string está contida em outra.<br />

endsWith Determi<strong>na</strong> se uma string termi<strong>na</strong> com os caracteres de outra string<br />

indexOf Retor<strong>na</strong> o índice da primeira ocorrência da string passada por parâmetro, ou -1 se não encontrar.<br />

lastIndexOf Retor<strong>na</strong> o índice da última ocorrência da string passada por parâmetro, ou -1 se não encontrar.<br />

replace Utilizado para combi<strong>na</strong>r uma excodessão regular com uma string e substituir a substring que atender ao<br />

regex por uma nova substring.<br />

"<strong>jQuery</strong> <strong>na</strong> <strong>Prática</strong>".replace("a", "4"); // "<strong>jQuery</strong> n4 Prátic4"<br />

slice Extrai parte de uma string e retor<strong>na</strong> uma nova string.<br />

split Dividir um objeto String em uma array de strings.<br />

"<strong>jQuery</strong> <strong>na</strong> Pratica".split(" "); // ["<strong>jQuery</strong>", "<strong>na</strong>", "<strong>Prática</strong>"]<br />

startsWith Determi<strong>na</strong> se a string começa com os caracteres de outra string.<br />

substr Retor<strong>na</strong> os caracteres em uma string que inicia em um determi<strong>na</strong>do índice com um tamanho especificado<br />

de caracteres.<br />

substring Retor<strong>na</strong> os caracteres em uma string entre dois índices de uma string.<br />

toLowerCase Retor<strong>na</strong> a string que chamou o método convertido para caixa baixa.


"<strong>jQuery</strong> <strong>na</strong> Pratica".toLowerCase(); // "jquery <strong>na</strong> prática"<br />

toUpperCase Retor<strong>na</strong> a string que chamou o método convertido para caixa alta.<br />

"<strong>jQuery</strong> <strong>na</strong> <strong>Prática</strong>".toUpperCase(); // "JQUERY NA PRÁTICA"<br />

Arrays<br />

Arrays no JavaScript são objetos do tipo lista que não possuem tamanho nem tipo de dado pré-definido.<br />

var frutas = ["maçã", "uva", "abacaxi"]; // Inicializa um array <strong>na</strong> variável frutas<br />

frutas[2]; // Retor<strong>na</strong> a posição 2, "abacaxi"<br />

frutas.length; // Retor<strong>na</strong> o tamanho da lista, 3<br />

frutas.reverse(); // Retor<strong>na</strong> a lista em ordem inversa, ["abacaxi", "uva", "maçã"]<br />

Seletores <strong>jQuery</strong><br />

O <strong>jQuery</strong> oferece um poderoso conjunto de ferramentas para selecio<strong>na</strong>r elementos em um documento, utilizando<br />

as especificações do CSS 1-3 e adicio<strong>na</strong>ndo recursos extras.<br />

Seletores básicos<br />

$("*") selecio<strong>na</strong> todos os elementos do documento.<br />

$(".class") selecio<strong>na</strong> todos os elementos de uma determi<strong>na</strong>da classe.<br />

$("p.autor"); // todos elementos com classe autor<br />

$(".destacar"); // todos elementos que possuam classe destacar<br />

$("elemento") selecio<strong>na</strong> todos os elementos de uma pági<strong>na</strong> dado uma tag.<br />

$("#id") selecio<strong>na</strong> um único elemento com o id informado.<br />

$("seletor1, seletor2, seletorN") selecio<strong>na</strong> todos os elementos conforme os seletores especificados.<br />

Seletores de atributos<br />

[<strong>na</strong>me*="value"] Selecio<strong>na</strong> todos os elementos com um valor dado uma substring.<br />

[<strong>na</strong>me$="value"] Selecio<strong>na</strong> todos os elementos que termi<strong>na</strong>m com atributo<br />

[<strong>na</strong>me="value"] Selecio<strong>na</strong> todos os elementos que o atributo for igual ao valor informado.<br />

[<strong>na</strong>me!="value"] Selecio<strong>na</strong> todos os elementos que o atributo for diferente do valor informado.<br />

[<strong>na</strong>me^="value"] Selecio<strong>na</strong> todos os elementos cujo atributo inicia com a substring informada.<br />

[<strong>na</strong>me] Selecio<strong>na</strong> todos os elementos que possuam um determi<strong>na</strong>do atributo<br />

[<strong>na</strong>me="value"][<strong>na</strong>me2="value2"] Selecione múltiplos atributos<br />

Filtros de seleção


Os filtros de seleção são baseados no index da array de retorno do seletor.<br />

:first Retor<strong>na</strong> o primeiro elemento da seleção.<br />

:last Retor<strong>na</strong> o último elemento da seleção.<br />

:eq() Retor<strong>na</strong> o elemento com um índice específico.<br />

:even Retor<strong>na</strong> todos os elementos com índice par.<br />

:odd Retor<strong>na</strong> todos os elementos com índice ímpar.<br />

Manipulando CSS<br />

.css() Utilizado para recuperar ou definir um determi<strong>na</strong>do atributo css ao elemento selecio<strong>na</strong>do.<br />

$("p").css("font-size"); // retor<strong>na</strong> o valor do font-size do elemento <br />

$("p").css("font-size", "12px"); // define o font-size do elemento para 12px<br />

$(p").css(font-size", 24px")<br />

.css(font-weight", bold")<br />

.css(line-height", 32px");<br />

// ou um map<br />

$(p").css({font-size": 24px",<br />

font-weight": bold",<br />

line-height": 32px"});<br />

.addClass() Adicio<strong>na</strong> uma determi<strong>na</strong> classe ao elemento.<br />

.removeClass() Remove uma determi<strong>na</strong>da classe do elemento. Se o parâmetro for omitido, remove todas as<br />

classes do elemento.<br />

.toggleClass() Alter<strong>na</strong> entre incluir e remover uma determi<strong>na</strong>da classe. Se o elemento já possuir uma classe, o<br />

<strong>jQuery</strong> remove. Se não possuir, inclui.<br />

.hasClass() Retor<strong>na</strong> true caso o elemento possua a classe ou false caso contrário.<br />

Visibilidade<br />

.show() Altera o display do elemento para normal .<br />

.hide() Altera o display do elemento para none .<br />

.toggle() Alter<strong>na</strong> entre normal e none .<br />

Manipulando Conteúdo<br />

.html() Retor<strong>na</strong> o conteúdo html da seleção.<br />

.text() Retor<strong>na</strong> o conteúdo texto da seleção.<br />

.append() Insere conteúdo dentro do fi<strong>na</strong>l da seleção.


.prepend() Insere conteúdo dentro do início da seleção.<br />

.before() Insere conteúdo antes da seleção.<br />

.after() Insere conteúdo após a seleção.<br />

Eventos<br />

Estes métodos são utilizados para adicio<strong>na</strong>r comportamento que reagem à interação do usuário com o browser.<br />

Eventos de Mouse<br />

.click() Dispara no evento de click do mouse<br />

$("p").click(function () {<br />

});<br />

$("p").hide();<br />

.dblclick() Dispara com click duplo<br />

.hover() Dispara quando mouse entra e/ou sai do elemento<br />

$("p").hover(<br />

function () { $(this).addClass("destacar");},<br />

function () { $(this).removeClass("destacar");}<br />

);<br />

.mousedown() Dispara quando o botão do mouse é pressio<strong>na</strong>do.<br />

.mouseenter() Dispara quando o mouse entra no elemento.<br />

.mouseleave() Dispara quando o mouse sai do elemento.<br />

.mousemove() Dispara quando o mouse se move.<br />

.mouseup() Dispara quando ao término do click do mouse.<br />

Eventos de Teclado<br />

.keydown() Dispara ao apertar a tecla.<br />

.keypress() Dispara ao pressio<strong>na</strong>r a tecla.<br />

.keyup() Dispara ao soltar a tecla.<br />

Eventos de Formulário<br />

.blur() Dispara ao input perder o foco.<br />

.change() Dispara quando um valor é alterado.<br />

.focus() Dispara quando um input recebe foco.<br />

.select() Dispara ao selecio<strong>na</strong>r um texto, option, radio.


.submit() Dispara submeter o formulário.<br />

Objeto Event<br />

$("body").keypress(function (event) {<br />

});<br />

event.which código númerico da tecla pressio<strong>na</strong>da.<br />

event.preventDefault() evita a ação padrão do browser.<br />

event.stopPropagation() evita propagação do evento no DOM.<br />

Animação<br />

Slide<br />

.slideUp([duração][,callback])<br />

duração<br />

Tempo da animação em milisegundos<br />

Default 400 milisegundos<br />

Aceita parâmetros "slow" (600ms) e "fast" (200ms)<br />

callback<br />

Função que será executada após o término da animação<br />

$("p").slideUp("slow");<br />

$("p").slideUp(1000, function () {<br />

});<br />

alert("Concluiu a animação!");<br />

$("p").slideDown("fast");<br />

$("p").slideToggle();<br />

Fade<br />

.slideIn([duração][,callback])<br />

duração<br />

Tempo da animação em milisegundos<br />

Default 400 milisegundos<br />

Aceita parâmetros "slow" (600ms) e "fast" (200ms)<br />

callback<br />

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


$("p").slideIn("slow");<br />

$("p").slideIn(1000, function () {<br />

});<br />

alert("Concluiu a animação!");<br />

$("p").slideOut("fast");<br />

$("p").fadeToggle();<br />

Funções <strong>jQuery</strong><br />

É possível adicio<strong>na</strong>r funções ao prototype do <strong>jQuery</strong>, o que permite chamá-las utilizando a seguinte notação:<br />

$("this").destacar() .<br />

$.fn.vazio = function () {<br />

var value = $(this).val();<br />

if (value == "") {<br />

return true;<br />

}<br />

else {<br />

return false;<br />

}<br />

};<br />

$("input").vazio();<br />

Ajax<br />

A biblioteca <strong>jQuery</strong> conta com uma solução completa de AJAX. As funções e métodos contidos nela nos permite<br />

carregar dados do servidor sem recarregar a pági<strong>na</strong> no browser.<br />

$.ajax<br />

$.ajax([opcoes])<br />

O parâmetro opcoes é um map que aceita os seguintes valores:<br />

async default: true<br />

Tipo: Boolean<br />

Define se a requisição será síncro<strong>na</strong> ou assíncro<strong>na</strong>.<br />

beforeSend<br />

Tipo: Function


Função que será executada antes de realizar a requisição.<br />

cache (default: true, false para dataType 'script' e 'jsonp')<br />

Tipo: Boolean<br />

Determi<strong>na</strong> se a requisição será armaze<strong>na</strong>da no cache do browser do usuário ou não.<br />

complete<br />

Tipo: Function<br />

Função que será executada após a conclusão da requisição.<br />

contentType (default: 'application/x-www-form-urlencoded; charset=UTF-8')<br />

Tipo: String<br />

data<br />

Tipo: Object, String<br />

Representa os dados que serão enviados para o servidor<br />

dataType (default: Intelligent Guess (xml, json, script, or html))<br />

Tipo: String<br />

error<br />

Tipo: Function<br />

Função que será executada em caso de erro.<br />

success<br />

Tipo: Function<br />

Função que será executada em caso de sucesso.<br />

timeout<br />

Tipo: Number<br />

Define o tempo em milisegundos em que a requisição irá aguardar antes de dar timeout.<br />

type (default: 'GET')<br />

Tipo: String<br />

Define se a requisição será do tipo GET ou POST .


url (default: Pági<strong>na</strong> atual)<br />

Tipo: String<br />

Define a pági<strong>na</strong> para onde a requisição será feita.<br />

Exemplo de uma requisição assíncro<strong>na</strong> utilizando a função $.ajax :<br />

$.ajax({<br />

url: 'usuarios.php',<br />

data: { id: "10", acao: "editar" },<br />

cache: false,<br />

type: "POST",<br />

beforeSend: function () {<br />

// execução antes de realizar requisição<br />

},<br />

success: function (data) {<br />

// execução em caso de sucesso<br />

},<br />

error: function () {<br />

// execução em caso de erro<br />

}<br />

complete: function () {<br />

// execução ao termi<strong>na</strong>r requisição<br />

}<br />

});<br />

$.load<br />

Permite especificar um elemento para receber a resposta e uma função de callback.<br />

$('#resultado').load('usuarios.php');<br />

// A resposta da requisição à pági<strong>na</strong> usuarios.php é inserida dentro do elemento #resultado<br />

$('#resultado').load('usuarios.php', function () {<br />

});<br />

// Executa após termi<strong>na</strong>r a requisição<br />

$('#resultado').load('usuarios.php', { id: 10 } function () {<br />

// Executa após termi<strong>na</strong>r a requisição<br />

});<br />

$.post<br />

$.post(url [,data] [,success(data, textStatus, jqXHR)] [,dataType])<br />

O método post do <strong>jQuery</strong> corresponde à seguinte implementação:


$.ajax({<br />

type: "POST",<br />

url: url,<br />

data: data,<br />

success: success,<br />

dataType: dataType<br />

});<br />

$.post("login.php", { usuario: "vitorfs", senha: "123456" });<br />

$.post("login.php", $("form").serialize(), function () {<br />

// Executa callback<br />

});<br />

$.get<br />

$.get(url [,data] [,success(data, textStatus, jqXHR)] [,dataType])<br />

O método get do <strong>jQuery</strong> corresponde à seguinte implementação:<br />

$.ajax({<br />

url: url,<br />

data: data,<br />

success: success,<br />

dataType: dataType<br />

});<br />

$.get("cidades.php", { uf: "mg" }, function (data) {<br />

});<br />

$("select").html(data);<br />

Formulários<br />

Serializando um Formulário<br />

A função .serialize() do <strong>jQuery</strong> nos permite formatar os dados de um formulário. Considere o seguinte<br />

formulário:<br />

<br />

Nome: <br />

Email: <br />

Cpf: <br />

Enviar<br />

<br />

Ao executarmos o comando $("#cadastro").serialize() teríamos o seguinte retorno:<br />

nome=Vitor&email=vitorfs@gmail.com&cpf=123456789012


Serializando em Array<br />

Considerando o mesmo formulário, ao executar a chamada $("#cadastro").serializeArray() teríamos o seguinte<br />

retorno:<br />

[<br />

{<br />

<strong>na</strong>me = “nome”,<br />

value = “vitor”<br />

},<br />

{<br />

<strong>na</strong>me = “email”,<br />

value = “vitorfs@gmail.com”<br />

},<br />

{<br />

<strong>na</strong>me = “cpf”,<br />

value = “123456789012”<br />

}<br />

]

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!