Programação Web com jQuery

92
Victor Adriel

description

Oficina realizada em 2011. Apresenta a linguagem javascript e os frameworks jQuery e jQuery UI. Contém vários exercícios práticos e demos além de referências úteis.

Transcript of Programação Web com jQuery

Page 1: Programação Web com jQuery

Victor Adriel

Page 2: Programação Web com jQuery

Victor Adriel de J. Oliveira

Associação Empresa Júnior de Computação:◦ 2008 – Trainee

◦ 2009 – Diretor Administrativo/Financeiro

◦ 2010 – Conselheiro Fiscal

Programação Web:

[HTML/CSS (tableless), jQuery, PHP, Smarty]

Contato: [email protected]

blogvictoradriel.blogspot.com

Page 3: Programação Web com jQuery

O que é

Sintaxe◦ Seletores

◦ Manipulação do DOM

◦ CSS

◦ Eventos

◦ Efeitos

◦ Formulários

jQuery UI

Práticas

Page 4: Programação Web com jQuery

É uma biblioteca JavaScript disponibilizada como software livre e aberto, desenvolvida para mudar a forma de escrever JavaScript.

“O foco principal da biblioteca jQuery é a simplicidade. Por que submeter os desenvolvedores ao martírio de escrever longos e complexos códigos para criar simples efeitos?” (John Resig, jQuery in Action)

Page 5: Programação Web com jQuery

22/08/2005◦ “The premise for the module is as follows: Using

the power of Pseudo-CSS Selectors, bind your Javascript functions to various HTML elements in the DOM. Looking at how Behaviour works, I've never been completely happy - it simply seems too tedious and verbose for everyday use.” (John Resig)

14/01/2006◦ jQuery: New Wave Javascript

Page 6: Programação Web com jQuery

22/08/2005◦ “The premise for the module is as follows: Using

the power of Pseudo-CSS Selectors, bind your Javascript functions to various HTML elements in the DOM. Looking at how Behaviour works, I've never been completely happy - it simply seems too tedious and verbose for everyday use.”

14/01/2006◦ jQuery: New Wave Javascript

“Jquery is like behaviour that has been sent back from the future by a secret fucking government lab”

Zombieland

Page 7: Programação Web com jQuery

Utiliza seletores CSS para acessar e manipular o DOM;

Alheio às inconsistências de renderizaçãoentre navegadores;

Extensível;

Provê interatividade;

Simplifica tarefas específicas de JavaScript.

Page 8: Programação Web com jQuery

HTML DOM:

◦ O HTML DOM define objetos e propriedades para todos os elementos HTML, e os métodos (interface) para acessá-los.

◦ Em outras palavras: o HTML DOM é um padrão para acesso, atualização, adição ou deleção de elementos HTML.

Page 9: Programação Web com jQuery

Propriedades do HTML DOM:

◦ x.innerHTML – texto do elemento x

◦ x.nodeName – nome do elemento x

◦ x.nodeValue – valor do elemento x

◦ x.parentNode – pai do elemento x

◦ x.childNodes – filhos do elemento x

◦ x.attributes – atributos do elemento x

Page 10: Programação Web com jQuery

Métodos do HTML DOM:

◦ x.getElementById(id) Captura o elemento com um id específico

◦ x.getElementsByTagName(name) Captura todos os elementos com o mesmo comando

◦ x.appendChild(node) Insere um novo nó filho no elemento x

◦ x.removeChild(node) Remove um nó filho do elemento x

Page 11: Programação Web com jQuery

Métodos do HTML DOM:<html>

<body>

<p id="intro">Hello World!</p>

<script type=“text/javascript”>

txt=document.getElementById("intro").innerHTML;

alert("O texto do paragrafo com o id 'info': " + txt);

</script>

</body>

</html>

Page 12: Programação Web com jQuery

Métodos do HTML DOM:<html>

<body>

<p id="intro">Hello World!</p>

<script type=“text/javascript”>

txt=document.getElementById("intro").innerHTML;

alert("O texto do paragrafo com o id 'info': " + txt);

</script>

</body>

</html>

Var txt = $(‘#intro’).val();

Com jQuery

Page 13: Programação Web com jQuery

Ir ao site: http://jquery.com

Fazer download da biblioteca

Linkar na página HTML:

<head>

<script type=“text/javascript” src=“/caminho/jquery-vs.js”></script>

</head>

Page 14: Programação Web com jQuery
Page 15: Programação Web com jQuery
Page 16: Programação Web com jQuery

Minified◦ jquery-1.6.4.min.js

◦ Compacto e de leitura difícil

Uncompressed◦ jquery-1.6.4.js

◦ Espaço entre cada linha de código e amplamente comentado.

Page 17: Programação Web com jQuery

JavaScript in-line:◦ CSS

<style type=“text/css”>h1 { color:#090; }

</style>

◦ HTML com o JavaScript in-line

<h1 id=“cor”>Cabeçalho muda de cor</h1><button type=“button”

onclick=“document.getElementById(‘cor’).style.color=‘#F00’;”>Vermelha</button>

Page 18: Programação Web com jQuery

Função JavaScript:<script type=“text/javascript”>

function mudaCor() {document.getElementById(‘cor’).style.color=‘#F00’;}

</script>

◦ HTML

<h1 id=“cor”>Cabeçalho muda de cor</h1><button type=“button”

onclick=“mudaCor();”>Vermelha</button>

Page 19: Programação Web com jQuery

JavaScript fora da marcação:

<script type=“text/javascript”>

Window.onload = function(){

Document.getElementById(‘btnRed’).onclick = mudaCor;

}

function mudaCor() {

document.getElementById(‘cor’).style.color=‘#F00’;

}

</script>

Page 20: Programação Web com jQuery

JavaScript fora da marcação:

◦ HTML

<h1 id="cor">Cabeçalho muda de cor</h1>

<button type="button" id=“btnRed">Vermelha</button>

Page 21: Programação Web com jQuery

jQuery:<script type="text/javascript"

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

<script type="text/javascript">

$(document).ready(function(){

$("#btnRed").click(function () {

$("#cor").css("color","#FF0000");

});

});

</script>

Page 22: Programação Web com jQuery

Método ready()

◦ No javascript

window.onload = function(){

Do this;

}

◦ No jQuery

$(document).ready(function(){

Do this;

});

Page 23: Programação Web com jQuery

Construtor jQuery

◦ $( )

◦ jQuery( )

jQuery.noConflict( )

◦ Usa o alias jQuery ou outro de sua preferência

Page 24: Programação Web com jQuery

jQuery adota os seletores CSS 3! #ôPelaDoido

É necessário rever a terminologia aplicada aos elementos que compõem a árvore do documento.

Page 25: Programação Web com jQuery

HTML DOM

Page 26: Programação Web com jQuery

Categorias:◦ Básicos

◦ De atributo

◦ Hierárquicos

◦ Filtros

Básicos

De conteúdo

Por visibilidade

De filhos

◦ De formulários

Page 27: Programação Web com jQuery

Básicos◦ Universal

$(“*”)

◦ De elemento

$(“p”)

◦ De múltiplos elementos

$(“p, h1, img”)

Page 28: Programação Web com jQuery

Básicos◦ De classe

$(“.class”)

◦ De ID

$(“#id”)

Page 29: Programação Web com jQuery

De atributo $(‘[nome]’)

$(‘[nome = “valor”]’)

$(‘[nome != “valor”]’)

$(‘[nome ^= “valor”]’)

$(‘[nome |= “valor”]’)

Page 30: Programação Web com jQuery

De atributo $(‘[nome *= “valor”]’)

$(‘[nome ~= “valor”]’)

$(‘[nome $= “valor”]’)

$(‘[nome = “valor”][nome2 = “valor2”]’)

Page 31: Programação Web com jQuery

Hierárquicos $(“ancestral descendente”)

$(“pai > filho”)

$(“anterior + posterior”)

$(“elemento ~ irmãos”)

Page 32: Programação Web com jQuery

Atributos gerais◦ .attr( nomeAtributo )

.attr( nomeAtributo, valor )

Ex: $(‘input’).attr(‘disabled’, ‘disabled’)

◦ .prop( nomePropriedade ).prop( nomePropriedade, valor )

Ex: $(‘input’).prop({disabled: true

});

Page 33: Programação Web com jQuery

◦ .removeAttr( nomeAtributo )

◦ .removeProp( nomePropriedade )

Ex: $(“input”).removeProp(“checked”);

◦ .val( )

.val( valor )

Ex: $(“input”).val(‘Digite seu nome’);

Page 34: Programação Web com jQuery

Atributos de classe◦ .addClass( nomeClasse )

◦ .removeClass( [nomeClasse] )

◦ .hasClass( nomeClasse )

◦ .toggleClass( nomeClasse )

.toggleClass( nomeClasse, switch )

.toggleClass( [switch] )

Page 35: Programação Web com jQuery

HTML

<body>

<img src=" http://goo.gl/kQBXL"

alt="Yao Ming" />

<div class="info"></div>

</body>

Page 36: Programação Web com jQuery

jQuery

$(document).ready(function(){

var atrAlt = $('img').attr('alt');

$('div').text(atrAlt );

$('img').attr('title','Você perdeu a capacitação?');

});

Page 37: Programação Web com jQuery

CSS

<style type=“text/css”>

.info{ color: red; }

.highlight { background: yellow; }

</style>

Page 38: Programação Web com jQuery

jQuery

$('div').removeClass('info');

Page 39: Programação Web com jQuery

jQuery

$('div').removeClass('info').addClass('highlight');

Page 40: Programação Web com jQuery

jQuery

$('div').removeClass('info').addClass('highlight');

var ctd=0;

$('div').click(function( ){

ctd++;

$('div').toggleClass('highlight', ctd % 3 == 0);

});

Page 41: Programação Web com jQuery

Inserção no DOM (Outside)◦ .after( )

◦ .before( )

Ex: $("p").before("<b>Hello</b>");

◦ .insertAfter( )

◦ .insertBefore( )

Ex: $("p").insertBefore("#smthng");

Page 42: Programação Web com jQuery

Inserção no DOM (Inside)◦ .append( )

◦ .prepend( )

Ex: $("p").prepend("<b>Hello</b>");

◦ .appendTo( )

◦ .prependTo( )

Ex: $("p").prependTo("#smthng");

Page 43: Programação Web com jQuery

Inserção no DOM (Inside)◦ .html( )

◦ .text( )

Ex:

◦ $(“div").html(“<button>botão</button>”);

◦ $(“div").text (“<button>botão</button>”);

Page 44: Programação Web com jQuery

Inserção no DOM (Around)◦ .wrap( )◦ .wrapAll( )◦ .wrapInner( )

◦ CSSdiv { border: 2px solid blue; }p { background:yellow; margin:4px; }

◦ HTML<p>Hello</p>

◦ jQuery$("p").wrap("<div></div>");

Page 45: Programação Web com jQuery

Remoção no DOM◦ .unwrap( )

Remove o pai e coloca o filho no lugar

◦ .empty( )

Remove conteúdo do elemento

◦ .detach( )

Remove elementos mas permite recuperá-los

◦ .remove( )

Remove elementos completamente

Page 46: Programação Web com jQuery

Substituição no DOM◦ .replaceAll( )

◦ .replaceWith( )

Ex:

◦ $("<b>Paragraph. </b>").replaceAll("p");

◦ $("p").replaceWith("<b>Paragraph. </b>");

Cópias◦ .clone( )

Page 47: Programação Web com jQuery

HTML

<label>Colaboradores:</label>

<select class="copy" style="display:block;">

<option value="0">Selecione um...</option>

<option value="1">Ana</option>

<option value="2">João</option>

<option value="3">Maria</option>

</select>

<button id="novoColaborador">More</button>

<button id="removColaborador">Less</button>

Page 48: Programação Web com jQuery

jQuery

$('#novoColaborador').click(function( ){

$('.copy:last').clone( ).appendTo('body');

});

$('#removColaborador').click(function( ){

$('.copy:last').remove( );

});

Page 49: Programação Web com jQuery

Propriedades de estilo◦ .css( )

Ex:

◦ Var back = $(“div").css("background-color");

◦ $("p").css("color","red");

◦ $( this ).css({"width" : "+=100", "color" : "red"});

Page 50: Programação Web com jQuery

Dimensionamento◦ .height( ) / .width( )

◦ .innerHeight( ) / .innerWidth( )

◦ .outerHeight( ) / .outerWidth( )

Page 51: Programação Web com jQuery

Dimensionamento◦ .height( ) / .width( )

◦ .innerHeight( ) / .innerWidth( )

◦ .outerHeight( ) / .outerWidth( )

Page 52: Programação Web com jQuery

Dimensionamento◦ .height( ) / .width( )

◦ .innerHeight( ) / .innerWidth( )

◦ .outerHeight( ) / .outerWidth( )

Page 53: Programação Web com jQuery

Offset◦ .offset( )

◦ .position( )

Ex:

var pos = $("p").position( );

alert( pos.left );

◦ .scrollLeft( ) / .scrollTop( )

Ex: $(“div").scrollLeft(300);

Page 54: Programação Web com jQuery

Diferença entre offset e position:

◦ CSSdiv { padding: 15px;}p { margin-left:10px; }

◦ HTML

<div><p>Hello</p></div>

<p></p>

◦ jQueryvar pos = $("p:first").position( );$("p:last").text( "left: "+ pos.left + ", top: "+ pos.top );

Page 55: Programação Web com jQuery

◦ CSS#box {background: black; color: #fff; width:100px;}

◦ HTML<div id="box">Click me to grow</div>

◦ jQuery

$("#box").click(function ( ) {$( this ).css( "width","+=200" );

});

Page 56: Programação Web com jQuery

Eventos do mouse◦ .click( )

Ativado com um clique

◦ .dblclick( )

Ativado com um duplo clique

◦ .hover( )

Ativado quando o cursor estiver sobre o elemento

◦ .mousemove( )

Ativado com o movimento do mouse

Page 57: Programação Web com jQuery

Eventos do mouse◦ .mousedown( ) / .mouseup( )

Ativado com pressionar/soltar o clique

◦ .mouseenter( ) / .mouseleave( )

Cursor passa sobre ou deixa o elemento

◦ .mouseover( ) / .mouseout( )

Cursor passa sobre ou sai dos elementos filhos

◦ .toggle( )

Ativa funções em cliques alternados

Page 58: Programação Web com jQuery

Vamos usar o jsbin para treinar

<body>

<p>Pressione o mouse aqui.</p>

<script>

$("p").mouseup(function( ){

$(this).append('<span style="color:#F00;">Up.</span>');

}).mousedown(function(){

$(this).append('<span style="color:#00F;">Down.</span>');

});

</script>

</body>

Page 59: Programação Web com jQuery

Eventos do teclado◦ .focusin( )

Ativado com o foco no elemento

◦ .focusout( )

Ativado com a perda do foco no elemento

◦ .keypress( )

Ativado com o pressionar de qualquer tecla

◦ .keyup( ) / .keydown( )

Ativado com o pressionar/soltar a tecla

Page 60: Programação Web com jQuery

var estado=0;$(‘body’).keypress(function(tecla){

switch( estado ){case 0:

if(tecla.which==116){ estado++; } else { estado=0; }break;

case 1:if(tecla.which==101){ estado++; } else { estado=0; }break;

case 2:if(tecla.which==99){

alert(“ Vc digitou ‘tec’? ”); } estado=0;

}});

Page 61: Programação Web com jQuery

Além dos eventos do mouse e teclado vocês devem estudar mais sobre:

Event Handler Attachment

Objetos de eventos

Eventos do browser

Carregando o documento

Page 62: Programação Web com jQuery

Agora vamos brincar um pouquinho ^^

Acesse esse link: http://goo.gl/dLYCOe baixe o arquivo que vamos usar.

Vamos incrementar a página usando jQuery

O que for digitado na caixa de texto deve aparecer na tela.

Page 63: Programação Web com jQuery

Categorias◦ Básicos

◦ De opacidade

◦ Corrediços

◦ De customização

Page 64: Programação Web com jQuery

Básicos◦ .hide( )

◦ .show( )

◦ .toggle( )

Page 65: Programação Web com jQuery

Opacidade◦ .fadeIn( )

◦ .fadeOut( )

◦ .fadeTo( )

◦ .fadeToggle( )

Page 66: Programação Web com jQuery

Corrediços◦ .slideDown( )

◦ .slideUp( )

◦ .slideToggle( )

Page 67: Programação Web com jQuery

HTML<div>

<h3>Titulo 1</h3>

<p>texto 1. Texto, texto e mais texto</p>

</div>

jQuery$('p').hide( );

$('h3').click(function( ){

$('p').hide( );

$(this).parent( ).find('p').show( );

});

Page 68: Programação Web com jQuery

HTML<div>

<h3>Titulo 1</h3>

<p>texto 1. Texto, texto e mais texto</p>

</div>

jQuery$('p').hide( );

$('h3').click(function( ){

$('p').hide( );

$(this).parent( ).find('p').show( );

}); Agora teste outros métodos:

.fadeIn( ) e .fadeOut( ).slideDown( ) e .slideUp( )

Page 69: Programação Web com jQuery

Customização◦ .animate( )

◦ .delay( )

◦ .stop( )

Page 70: Programação Web com jQuery

◦ CSSdiv {

background-color:#abc;

width:90px;

height:90px;

margin:5px;

font-size:1px;

}

◦ HTML<button id="left">&laquo;</button>

<button id="right">&raquo;</button>

<div class="block">x</div>

Page 71: Programação Web com jQuery

◦ jQuery

$("#right").click(function( ){

$(".block").animate({"margin-left": "+=200px"}, "slow");

});

$("#left").click(function( ){

$(".block").animate({"margin-left": "-=200px"}, "slow");

});

Page 72: Programação Web com jQuery

◦ HTML<button id="go">elem x</button>

◦ jQuery$("#go").click(function( ){

$(".block").animate({

width: "70%",

opacity: 0.4,

marginLeft: "0.6in",

fontSize: "5em",

borderWidth: "10px"}, 1500 );

});

Page 73: Programação Web com jQuery

◦ HTML

<button id=“stop">STOP</button>

◦ jQuery

$("#stop").click(function( ){

$(".block").stop( );

});

Page 74: Programação Web com jQuery

Baixe o arquivo: http://goo.gl/eo7MJ◦ Ajude o Mário a chegar ao outro lado usando o

método animate() do jQuery.

Page 75: Programação Web com jQuery

Seletores para formulários:◦ :button

◦ :checkbox

◦ :input

◦ :text

◦ :radio

◦ :submit

◦ :reset

◦ :password

◦ :selected

◦ ...

Page 76: Programação Web com jQuery

Seletores para formulários:◦ :button

◦ :checkbox

◦ :input

◦ :text

◦ :radio

◦ :submit

◦ :reset

◦ :password

◦ :selected

◦ ...

Ex:

$(“input:password”).css(“color”, “#CCC”);

Page 77: Programação Web com jQuery

Eventos relacionados a formulários:◦ .blur( )

◦ .change( )

◦ .focus( )

◦ .select( )

◦ .submit( )

Page 78: Programação Web com jQuery

◦ HTML<form>

<input type="text" name="busca" />

</form>

◦ jQuery$("input[name='busca']").val('Busca').css('color','#CCC')

.focus(function( ){

$(this).val('').css('color','#000');

}).blur(function( ){

$(this).val('Busca').css('color','#CCC');

});

Page 79: Programação Web com jQuery

Vamos baixar o formulário e incrementá-lo usando o jQuery. (http://goo.gl/Feq7L)

Começaremos analisando o código HTML do formulário.

Page 80: Programação Web com jQuery

// Dicas de preenchimento

$(‘input + span').hide( );

$(".obrigatorio").blur(function( ){

var val = $(this).val( );

if(val == ""){

$(this).next( ).show( );

}else{

$(this).next( ).hide( );

}

});

Page 81: Programação Web com jQuery

//Desabilitar campos

$("#nao").change(function( ){

$("input[name='local']").val("")

.attr('disabled','disabled');

});

$("#sim").change(function( ){

$("input[name='local']")

.removeAttr('disabled');

});

Page 82: Programação Web com jQuery

//Selecionar todos

$("#all").click(function( ){

if(this.checked){

$(".curso").attr('checked','checked');

}else{

$(".curso").removeAttr('checked');

}

});

Page 83: Programação Web com jQuery

//Validar

$("form").submit(function( ) {

var nome = $("input[name='nome']").val( );

var nasc = $("input[name='data']").val( );

var mail = $("input[name='email']").val( );

if(nome == ‘’){

alert("Preencha o campo nome.");

return false;

}

Page 84: Programação Web com jQuery

if(mail == ‘’){

alert("Preencha o campo email.");

return false;

}

if((nasc != ‘’)&&(! nasc.match(

/^[0-9]{2}\/[0-9]{2}\/[0-9]{4}$/))){

alert("Data de nascimento inválida.");

return false;

}return true;

});

Page 85: Programação Web com jQuery

Provê abstrações para interações e animações de baixo-nível, efeitos avançados e ferramentas personalizáveis construídas sobre a biblioteca jQuery.

Page 86: Programação Web com jQuery

Interações◦ Draggable

◦ Droppable

◦ Resizable

◦ Selectable

◦ Sortable

Page 87: Programação Web com jQuery

Widgets

◦ Accordion

◦ Autocomplete

◦ Button

◦ Datepicker

◦ Dialog

◦ Progressbar

◦ Slider

◦ Tabs

Page 88: Programação Web com jQuery

var nomes= ["Beatriz Silva","Eduardo Dantas","Ivan Cezanne","Janai Maciel","José Adão","Newton Costa","Thiago Evangelista"];

$( "input[name='nome']" ).autocomplete({ source: nomes });

Page 89: Programação Web com jQuery

HTML

<div id="dialog" title="Muaahaa">

<p>Cuidado: Vírus! Não feche essa pop-up.</p>

</div>

jQuery

$( "#dialog" ).dialog();

Page 90: Programação Web com jQuery

<div id="tabs"><ul>

<li><a href="#tabs-1">Um item</a></li><li><a href="#tabs-2">Outro</a></li><li><a href="#tabs-3">Mais um</a></li>

</ul><div id="tabs-1">

<p>Um texto aqui.</p></div><div id="tabs-2">

<p>Um texto aqui.</p></div><div id="tabs-3">

<p>Um texto aqui.</p><p>Um texto aqui.</p>

</div></div> jQuery:

$( "#tabs" ).tabs( );

Page 91: Programação Web com jQuery

<div id="accordion"><h3><a href="#">Um item</a></h3><div>

<p>Um texto aki</p></div><h3><a href="#">Outro</a></h3><div>

<p>Um texto aki</p></div><h3><a href="#">Mais um</a></h3><div>

<p>Um texto aki</p></div>

</div>jQuery: $( "#accordion" ).accordion( );

Page 92: Programação Web com jQuery

http://jquery.com/

http://ejohn.org/blog/selectors-in-javascript/

http://bennolan.com/behaviour/

http://www.w3schools.com/htmldom/default.asp

jQuery – A Biblioteca do Programador JavaScript, 2008, Maurício S. Silva, NOVATEC

Ajax com jQuery – Requisições AJAX com a simplicidade de jQuery, 2009, Maurício S. Silva, NOVATEC