JQuery do dia-a-dia Gustavo Dutra

68
Introdução Gustavo Dutra

description

 

Transcript of JQuery do dia-a-dia Gustavo Dutra

Page 1: JQuery do dia-a-dia Gustavo Dutra

Introdução

Gustavo Dutra

Page 2: JQuery do dia-a-dia Gustavo Dutra

void bogosort(int size, int *array) { int i, j; for (i = 1; i <= size; i++) if (i == size) return; else if (array[i-1] > array[i]) break; for (i = 0; i < size; i++) { j = rand() % size; if (array[i] != array[j]) { int aux = array[i]; array[i] = array[j]; array[j] = aux; } } bogosort(size, array);} Adaptado de

http://pt.wikipedia.org/wiki/Bogosort#C

C

Page 3: JQuery do dia-a-dia Gustavo Dutra

from random import shuffle

def bogosort(seq): while not all(x<=y for x,y in zip(seq,seq[1:])): shuffle(seq) return seq

Adaptado dehttp://pt.wikipedia.org/wiki/Bogosort#Python

Python

Page 4: JQuery do dia-a-dia Gustavo Dutra

w t f ?

Page 5: JQuery do dia-a-dia Gustavo Dutra

DOM - Data Object Model

Define um padrão para acessar documentos

DOM Core Qualquer documento

DOM XML XML

DOM HTML HTML

Fonte: http://www.w3schools.com/HTMLDOM/dom_intro.asp

OBJETOS MÉTODOS PROPRIEDADES

Padrão do quê?

Page 6: JQuery do dia-a-dia Gustavo Dutra

HTML DOMvar el = document.getElementById("myDiv");el.parentNode.removeChild(el);

Page 7: JQuery do dia-a-dia Gustavo Dutra

HTML DOMvar el = document.getElementById("myDiv");el.parentNode.removeChild(el);

jQuery$("#myDiv").remove();

HTML DOM SUCKS!

Page 8: JQuery do dia-a-dia Gustavo Dutra

<input type="text" name="start_date" onchange="validDate(this);" />

<input type="text" name="end_date" onchange="validDate(this);" />

Page 9: JQuery do dia-a-dia Gustavo Dutra

<input type="text" name="start_date" onchange="validDate(this);" />

<input type="text" name="end_date" onchange="validDate(this);" />

E se o JavaScript não estiver habilitado?

E se mudar o nome da função validDate ?

E se for adicionado mais parâmetros?

Page 10: JQuery do dia-a-dia Gustavo Dutra

<input type="text" name="start_date" onchange="validDate(this);" />

<input type="text" name="end_date" onchange="validDate(this);" />

MANDA O ESTAGIÁRIO!

E se o JavaScript não estiver habilitado?

E se mudar o nome da função validDate ?

E se for adicionado mais parâmetros?

Page 11: JQuery do dia-a-dia Gustavo Dutra

<input type="text" name="start_date" class="date" />

<input type="text" name="end_date" class="date" />

Page 12: JQuery do dia-a-dia Gustavo Dutra

<input type="text" name="start_date" class="date" />

<input type="text" name="end_date" class="date" />

window.onload = function() { var inputs = document.getElementsByTagName("input"); for (var i = 0; i < inputs.length; i++) { if (inputs.[i].className == 'date') { inputs[i].onchange = function() { validDate(this); } } }}function validDate(element) { //...}

Page 13: JQuery do dia-a-dia Gustavo Dutra

Javascript Não-Obstrusivo

Page 14: JQuery do dia-a-dia Gustavo Dutra

Javascript Não-Obstrusivo

Graceful Degradation Progressive Enhancement

Page 15: JQuery do dia-a-dia Gustavo Dutra

Javascript Não-Obstrusivo

Não suponha, VERIFIQUE!

Graceful Degradation Progressive Enhancement

Page 16: JQuery do dia-a-dia Gustavo Dutra

Javascript Não-Obstrusivo

Valide em mais de um browser!

Não suponha, VERIFIQUE!

Graceful Degradation Progressive Enhancement

Page 17: JQuery do dia-a-dia Gustavo Dutra

Javascript Não-Obstrusivo

Mantenha os scripts o mais seguroPOSSÍVEL

Valide em mais de um browser!

Não suponha, VERIFIQUE!

Graceful Degradation Progressive Enhancement

Page 18: JQuery do dia-a-dia Gustavo Dutra

DOM SUCKS+

Javascript Não-Obstrusivo

Page 19: JQuery do dia-a-dia Gustavo Dutra

DOM SUCKS+

Javascript Não-Obstrusivo

originaram

jQuery

Page 20: JQuery do dia-a-dia Gustavo Dutra

jQueryCore

Page 21: JQuery do dia-a-dia Gustavo Dutra

jQueryCore

Ajax

Page 22: JQuery do dia-a-dia Gustavo Dutra

jQueryCore

Attributes

Ajax

Page 23: JQuery do dia-a-dia Gustavo Dutra

jQueryCore

Manipulation

Attributes

Ajax

Page 24: JQuery do dia-a-dia Gustavo Dutra

jQueryCore Effects

Manipulation

Attributes

Ajax

Page 25: JQuery do dia-a-dia Gustavo Dutra

jQueryCore

Traversing

Effects

Manipulation

Attributes

Ajax

Page 26: JQuery do dia-a-dia Gustavo Dutra

jQueryCore

Selectors

Traversing

Effects

Manipulation

Attributes

Ajax

Page 27: JQuery do dia-a-dia Gustavo Dutra

jQueryCore

EventsSelectors

Traversing

Effects

Manipulation

Attributes

Ajax

Page 28: JQuery do dia-a-dia Gustavo Dutra

jQueryCore

CSS

EventsSelectors

Traversing

Effects

Manipulation

Attributes

Ajax

Page 29: JQuery do dia-a-dia Gustavo Dutra

jQueryCore

Internals

CSS

EventsSelectors

Traversing

Effects

Manipulation

Attributes

Ajax

Page 30: JQuery do dia-a-dia Gustavo Dutra

jQueryCore

Utilities

Internals

CSS

EventsSelectors

Traversing

Effects

Manipulation

Attributes

Ajax

Page 31: JQuery do dia-a-dia Gustavo Dutra

jQueryCore

jQuery UI

Utilities

Internals

CSS

EventsSelectors

Traversing

Effects

Manipulation

Attributes

Ajax

Page 32: JQuery do dia-a-dia Gustavo Dutra

jQueryCore

Plugins

jQuery UI

Utilities

Internals

CSS

EventsSelectors

Traversing

Effects

Manipulation

Attributes

Ajax

Page 33: JQuery do dia-a-dia Gustavo Dutra

Lets Begin

Page 34: JQuery do dia-a-dia Gustavo Dutra

jQuery === $

((typeof jQuery) == "function")

((typeof $) == "function")

Page 35: JQuery do dia-a-dia Gustavo Dutra

jQuery === Jaspion

Jaspion = $.noConflict()

((typeof $) == "undefined")

Page 36: JQuery do dia-a-dia Gustavo Dutra

window.onload = function() { // ...}

Page 37: JQuery do dia-a-dia Gustavo Dutra

$(document).ready(function() { // ...});

$(function() { // ...});

OU

Page 38: JQuery do dia-a-dia Gustavo Dutra

$("div")

$("#id")

$(".class")

$("div#id > div")

$("ul li")

$("ul li:first,ul li:last")

$("ul li:not(li.active)")

$("li:contains(Home)")

$("li.active ~ li")

div#id

div.class

ul

li

li.active

li

div#id

div.class

ul

li

li.active

li

bodySELETORES

Page 39: JQuery do dia-a-dia Gustavo Dutra

$("div")

$("#id")

$(".class")

$("div#id > div")

$("ul li")

$("ul li:first,ul li:last")

$("ul li:not(li.active)")

$("li:contains(Home)")

$("li.active ~ li")

div#id

div.class

ul

li

li.active

li

div#id

div.class

ul

li

li.active

li

bodySELETORES

Page 40: JQuery do dia-a-dia Gustavo Dutra

$("div")

$("#id")

$(".class")

$("div#id > div")

$("ul li")

$("ul li:first,ul li:last")

$("ul li:not(li.active)")

$("li:contains(Home)")

$("li.active ~ li")

div#id

div.class

ul

li

li.active

li

div#id

div.class

ul

li

li.active

li

div#id

div.class

ul

li

li.active

li

div#id

div.class

ul

li

li.active

li

bodySELETORES

Page 41: JQuery do dia-a-dia Gustavo Dutra

$("div")

$("#id")

$(".class")

$("div#id > div")

$("ul li")

$("ul li:first,ul li:last")

$("ul li:not(li.active)")

$("li:contains(Home)")

$("li.active ~ li")

div#id

div.class

ul

li

li.active

li

div#id

div.class

ul

li

li.active

li

div#id

div.class

ul

li

li.active

li

div#id

div.class

ul

li

li.active

li

bodySELETORES

Page 42: JQuery do dia-a-dia Gustavo Dutra

$("div")

$("#id")

$(".class")

$("div#id > div")

$("ul li")

$("ul li:first,ul li:last")

$("ul li:not(li.active)")

$("li:contains(Home)")

$("li.active ~ li")

div#id

div.class

ul

li

li.active

li

div#id

div.class

ul

li

li.active

li

div#id

div.class

ul

li

li.active

li

div#id

div.class

ul

li

li.active

li

bodySELETORES

Page 43: JQuery do dia-a-dia Gustavo Dutra

div#id

div.class

ul

li

li.active

li

div#id

div.class

ul

li

li.active

li

div#id

div.class

ul

li

li.active

li

div#id

div.class

ul

li

li.active

li

div#id

div.class

ul

li

li.active

li

div#id

div.class

ul

li

li.active

li

div#id

div.class

ul

li

li.active

li

div#id

div.class

ul

li

li.active

li

$("div")

$("#id")

$(".class")

$("div#id > div")

$("ul li")

$("ul li:first,ul li:last")

$("ul li:not(li.active)")

$("li:contains(Home)")

$("li.active ~ li")

bodySELETORES

Page 44: JQuery do dia-a-dia Gustavo Dutra

div#id

div.class

ul

li

li.active

li

div#id

div.class

ul

li

li.active

li

div#id

div.class

ul

li

li.active

li

div#id

div.class

ul

li

li.active

li

$("div")

$("#id")

$(".class")

$("div#id > div")

$("ul li")

$("ul li:first,ul li:last")

$("ul li:not(li.active)")

$("li:contains(Home)")

$("li.active ~ li")

bodySELETORES

Page 45: JQuery do dia-a-dia Gustavo Dutra

div#id

div.class

ul

li

li.active

li

div#id

div.class

ul

li

li.active

li

div#id

div.class

ul

li

li.active

li

div#id

div.class

ul

li

li.active

li

$("div")

$("#id")

$(".class")

$("div#id > div")

$("ul li")

$("ul li:first,ul li:last")

$("ul li:not(li.active)")

$("li:contains(Home)")

$("li.active ~ li")

bodySELETORES

Page 46: JQuery do dia-a-dia Gustavo Dutra

div#id

div.class

ul

li

li.active

li

div#id

div.class

ul

li

li.active

li

div#id

div.class

ul

li

li.active

li

div#id

div.class

ul

li

li.active

li

$("div")

$("#id")

$(".class")

$("div#id > div")

$("ul li")

$("ul li:first,ul li:last")

$("ul li:not(li.active)")

$("li:contains(Home)")

$("li.active ~ li")

bodySELETORES

Page 47: JQuery do dia-a-dia Gustavo Dutra

var el = getElementById("myId");$("li", el);

var el = $("#myId");$("li", el);

$("#myId li");

$("li", "#myId");

CONTEXTO

Page 48: JQuery do dia-a-dia Gustavo Dutra

ATRIBUTOS

$(...)

Page 49: JQuery do dia-a-dia Gustavo Dutra

ATRIBUTOS

$(...) .addClass("css-class").removeClass("css-class").toggleClass("css-class")

Page 50: JQuery do dia-a-dia Gustavo Dutra

ATRIBUTOS

$(...)

.html()

.html("innerHTML")

.addClass("css-class")

.removeClass("css-class")

.toggleClass("css-class")

Page 51: JQuery do dia-a-dia Gustavo Dutra

ATRIBUTOS

$(...)

.text()

.text("text")

.html()

.html("innerHTML")

.addClass("css-class")

.removeClass("css-class")

.toggleClass("css-class")

Page 52: JQuery do dia-a-dia Gustavo Dutra

ATRIBUTOS

$(...)

.attr("id")

.attr("id", "new-id")

.text()

.text("text")

.html()

.html("innerHTML")

.addClass("css-class")

.removeClass("css-class")

.toggleClass("css-class")

Page 53: JQuery do dia-a-dia Gustavo Dutra

ATRIBUTOS

$(...)

.val()

.val("input value");

.attr("id")

.attr("id", "new-id")

.text()

.text("text")

.html()

.html("innerHTML")

.addClass("css-class")

.removeClass("css-class")

.toggleClass("css-class")

Page 54: JQuery do dia-a-dia Gustavo Dutra

$(...)

.children()

ATRAVESSAR

Page 55: JQuery do dia-a-dia Gustavo Dutra

$(...)

.children()

.eq(0)

ATRAVESSAR

Page 56: JQuery do dia-a-dia Gustavo Dutra

$(...)

.children()

.eq(0).next()

ATRAVESSAR

Page 57: JQuery do dia-a-dia Gustavo Dutra

$(...)

.children()

.eq(0)

.next() .prev()

ATRAVESSAR

Page 58: JQuery do dia-a-dia Gustavo Dutra

$(...)

.children()

.eq(0)

.next()

.prev().find(...)

ATRAVESSAR

Page 59: JQuery do dia-a-dia Gustavo Dutra

$(...)

.children()

.eq(0)

.next()

.prev()

.find(...)

.end()

ATRAVESSAR

Page 60: JQuery do dia-a-dia Gustavo Dutra

MANIPULAR

.prepend()

.append()

$(...)

Page 61: JQuery do dia-a-dia Gustavo Dutra

MANIPULAR

.after()

$(...)

.before()

$(...)

Page 62: JQuery do dia-a-dia Gustavo Dutra

MANIPULAR

$(...)

.wrap(...)

$(...)

$(...)$(...) .clone(...) $(...)

.clone() cria elementossoltos do documento

Page 63: JQuery do dia-a-dia Gustavo Dutra

EVENTOS

.click(function(event) { // ...});

.dblclick(function(event) { // ...});

.blur(function(event) { // ...});

.keypress(function(event) { // ...});

Page 64: JQuery do dia-a-dia Gustavo Dutra

EVENTOS

.hover(function(event) { // mouseenter},function(event) { // mouseleave});

Page 65: JQuery do dia-a-dia Gustavo Dutra

EVENTOS

.bind('click', function(event) { // ...});

.trigger('click');

.triggerHandler('click');

Page 66: JQuery do dia-a-dia Gustavo Dutra

EVENTOS

.bind('myEv', function(event) { // ...});

.trigger('myEv');

.bind('click', function(event) { // ...});

.trigger('click');

.triggerHandler('click');

Page 67: JQuery do dia-a-dia Gustavo Dutra

EFEITOS

.show()

.hide()

.fadeIn()

.fadeOut()

.slideDown()

.slideUp()

Page 68: JQuery do dia-a-dia Gustavo Dutra

http://[email protected]

@gustavotkg

La pregunta?