115
jQuery Essentials by Marc Grabanski v2

jQuery Essentials

Embed Size (px)

Citation preview

jQuery Essentialsby Marc Grabanski

v2

We needed a hero to get these guys in line

jQuery rescues us by workingthe same in all browsers!

Easier to write jQuery than pure JavaScript

divs = document.getElementByTagName(‘div’);

for (i = 0; i < divs.length; i++) {divs[i].style.display = ‘none’;

}

Hide divs with pure JavaScript

divs = document.getElementByTagName(‘div’);

for (i = 0; i < divs.length; i++) {divs[i].style.display = ‘none’;

}

Hide divs with pure JavaScript

$(“div”).hide();

Hide divs with jQuery

HTML is tied to JavaScript

jQuery Philosophy

#1. Find some HTML

jQuery Philosophy

#1. Find some HTML

#2. Do something to it

jQuery Philosophy

$(“div”)

Find

$(“div”)

Find let’s find some elements

Give $() a selector

Give $() a selector

$(“#myId”)

Give $() a selector

$(“#myId”) $(“.myClass”)

Give $() a selector

$(“#myId”) $(“.myClass”) $(“table”)

Selector Examples

$(“#content”) get element with id content

Selector Examples

$(“#content”) get element with id content

$(“li:first”) get first list item

Selector Examples

$(“#content”) get element with id content

$(“li:first”) get first list item

$(“tr:odd”) get odd numbered table rows

Selector Examples

$(“#content”) get element with id content

$(“li:first”) get first list item

$(“tr:odd”) get odd numbered table rows

$(“a[target=_blank]”)get all links who’s target is “_blank”

Selector Examples

$(“#content”) get element with id content

$(“li:first”) get first list item

$(“tr:odd”) get odd numbered table rows

$(“form[id^=step]”)get all forms who’s id starts with “step”

$(“a[target=_blank]”)get all links who’s target is “_blank”

You can also string selectors together

You can also string selectors together

$(“#myId, .myClass, table”)

$(“div”)

Find

Do

.addClass(“redbox”);$(“div”)

Find

jQuery API SpiceTwo things that make the API HOT

$(“div”).addClass(“redbox”)

Chain Methods

$(“div”).addClass(“redbox”)

Chain Methods

.fadeOut();

$(...).html();

One Method, Many Uses

$(...).html();

One Method, Many Uses

$(...).html(“<p>hello</p>”);

$(...).html();

One Method, Many Uses

$(...).html(“<p>hello</p>”);

$(...).html(function(i){

return “<p>hello “ + i + “</p>”;

});

jQuery Methods

jQuery Methods

•Moving Elements: append(), appendTo(), before(), after(),

jQuery Methods

•Moving Elements: append(), appendTo(), before(), after(),

•Attributescss(), attr(), html(), val(), addClass()

jQuery Methods

•Moving Elements: append(), appendTo(), before(), after(),

•Attributescss(), attr(), html(), val(), addClass()

•Eventsbind(), trigger(), unbind(), live(), click()

jQuery Methods

•Moving Elements: append(), appendTo(), before(), after(),

•Attributescss(), attr(), html(), val(), addClass()

•Eventsbind(), trigger(), unbind(), live(), click()

•Effectsshow(), fadeOut(), toggle(), animate()

jQuery Methods

•Moving Elements: append(), appendTo(), before(), after(),

•Attributescss(), attr(), html(), val(), addClass()

•Traversingfind(), is(), prevAll(), next(), hasClass()

•Eventsbind(), trigger(), unbind(), live(), click()

•Effectsshow(), fadeOut(), toggle(), animate()

jQuery Methods

•Moving Elements: append(), appendTo(), before(), after(),

•Attributescss(), attr(), html(), val(), addClass()

•Traversingfind(), is(), prevAll(), next(), hasClass()

•Eventsbind(), trigger(), unbind(), live(), click()

•Ajaxget(), getJSON(), post(), ajax(), load()

•Effectsshow(), fadeOut(), toggle(), animate()

jQuery Factory Method $()

You can also pass $() a functionto run the function after the page loads.

jQuery Factory Method $()

You can also pass $() a functionto run the function after the page loads.

$(function(){

});

jQuery Factory Method $()

You can also pass $() a functionto run the function after the page loads.

$(function(){

});code here will execute after DOM is ready

jQuery Factory Method $()

You can also pass $() a functionto run the function after the page loads.

$(function(){

});

Note: This is essentially the same as..$(document).ready(function(){ });

code here will execute after DOM is ready

jQuery Factory Method $()

You can also pass $() a functionto run the function after the page loads.

$(function(){

});

Note: This is essentially the same as..$(document).ready(function(){ });

code here will execute after DOM is ready

..you will see this in tutorials around the net

$(“#foo”)

Get element with ID foo and add some HTML.

<html><body>

<div>jQuery</div><div id=”foo”>example</div>

</body></html>

Moving Elements Examples

$(“#foo”)

Get element with ID foo and add some HTML.

<html><body>

<div>jQuery</div><div id=”foo”>example</div>

</body></html>

Moving Elements Examples

.append(“<p>test</p>”);

$(“#foo”)

Get element with ID foo and add some HTML.

<html><body>

<div>jQuery</div><div id=”foo”>example<p>test</p></div>

</body></html>

Moving Elements Examples

.append(“<p>test</p>”);

<html><body>

<div>jQuery<p>moving</p> <p>paragraphs</p>

</div><div id=”foo”>example</div>

</body></html>

$(“p”)

Move paragraphs to element with id “foo”

Moving Elements Examples

<html><body>

<div>jQuery<p>moving</p> <p>paragraphs</p>

</div><div id=”foo”>example</div>

</body></html>

$(“p”)

Move paragraphs to element with id “foo”

Moving Elements Examples

.appendTo(“#foo”);

$(“p”)

Move paragraphs to element with id “foo”

<html><body>

<div>jQuery</div><div id=”foo”>example

<p>moving</p> <p>paragraphs</p>

</div></body>

</html>

Moving Elements Examples

.appendTo(“#foo”);

Attributes

Attributes

.attr(‘id’)

Get

Attributes

.attr(‘id’)

Get

.html()

Attributes

.attr(‘id’)

Get

.html()

.val()

Attributes

.attr(‘id’)

Get

.html()

.val()

.css(“top”)

Attributes

.attr(‘id’)

Get

.html()

.val()

.width()

.css(“top”)

Attributes

.attr(‘id’)

Get

.html()

.val()

Set

.attr(‘id’, ‘foo’)

.width()

.css(“top”)

Attributes

.attr(‘id’)

Get

.html()

.val()

.html(“<p>hi</p>”)

Set

.attr(‘id’, ‘foo’)

.width()

.css(“top”)

Attributes

.attr(‘id’)

Get

.html()

.val()

.html(“<p>hi</p>”)

Set

.attr(‘id’, ‘foo’)

.val(“new val”)

.width()

.css(“top”)

Attributes

.attr(‘id’)

Get

.html()

.val()

.html(“<p>hi</p>”)

Set

.attr(‘id’, ‘foo’)

.val(“new val”)

.width()

.css(“top”) .css(“top”, “80px”)

Attributes

.attr(‘id’)

Get

.html()

.val()

.html(“<p>hi</p>”)

Set

.attr(‘id’, ‘foo’)

.val(“new val”)

.width() .width(60)

.css(“top”) .css(“top”, “80px”)

Attributes

$(...).css(“border”, “1px solid black”); Set border to 1px black

Attributes

$(...).css(“border”, “1px solid black”); Set border to 1px black

Set various css properties.$(...).css({

“background”: “yellow”, “height”: “400px”

});

Attributes

$(...).css(“border”, “1px solid black”); Set border to 1px black

Set various css properties.$(...).css({

“background”: “yellow”, “height”: “400px”

});

$(“a”).attr(“href”, “http://google.com”);Set all link’s href attribute to google.com

Attributes

Attributes

$(...).html(“<p>I’m new</p>”); Replace HTML with a new paragraph.

Attributes

$(...).html(“<p>I’m new</p>”); Replace HTML with a new paragraph.

Attributes

<div>whatever</div> turns into<div><p>I’m new</p></div>

$(...).html(“<p>I’m new</p>”); Replace HTML with a new paragraph.

Set checkboxes attribute “checked” to checked.$(“:checkbox”).attr(“checked”,”checked”);

Attributes

<div>whatever</div> turns into<div><p>I’m new</p></div>

$(...).html(“<p>I’m new</p>”); Replace HTML with a new paragraph.

Set checkboxes attribute “checked” to checked.$(“:checkbox”).attr(“checked”,”checked”);

$(...).val(“3”);Set input value to 3.

Attributes

<div>whatever</div> turns into<div><p>I’m new</p></div>

$(...).html(“<p>I’m new</p>”); Replace HTML with a new paragraph.

Set checkboxes attribute “checked” to checked.$(“:checkbox”).attr(“checked”,”checked”);

$(...).val(“3”);Set input value to 3.

$(...).val();Get input value.

Attributes

<div>whatever</div> turns into<div><p>I’m new</p></div>

Events Examples

Events

$(“button”).click(function(){something();

});

When a button is clicked, do something.

Events

$(“button”).click(function(){something();

});

When a button is clicked, do something.

Setup a custom event and trigger it.$(“button“).bind(“expand”, function(){

something();}); $(“button:first“).trigger(“expand”);

Events

$(“button”).click(function(){something();

});

When a button is clicked, do something.

Setup a custom event and trigger it.$(“button“).bind(“expand”, function(){

something();}); $(“button:first“).trigger(“expand”);

Events

$(“button“).unbind(“expand”);Unbind custom event.

Event Delegation

$(“button”).live(‘click’, function(){something();

});

Event Delegation

Attach events to document

$(“button”).live(‘click’, function(){something();

});

Event Delegation

Attach events to document

Attach event delegation to elements

$(“form“).delegate(“button”, ”click”, function(){something();

});

Effects / Animation Examples

Animation / Effects

Types of Effects

Animation / Effects

#1. Hide and Show

Types of Effects

Animation / Effects

#2. Fade In and Out

#1. Hide and Show

Types of Effects

Animation / Effects

#2. Fade In and Out

#1. Hide and Show

#3. Slide Up and Down

Types of Effects

Animation / Effects

$(...).click(function(){$(“div:first”).slideToggle();

});

With each click, slide up / slide down a div.

Animation / Effects

$(...).click(function(){$(“div:first”).slideToggle();

});

With each click, slide up / slide down a div.

Animate elements to 300px wide in .5 seconds.$(...).animate({ “width”: “300px” }, 500);

Animation / Effects

$(...).click(function(){$(“div:first”).slideToggle();

});

With each click, slide up / slide down a div.

Animate elements to 300px wide in .5 seconds.$(...).animate({ “width”: “300px” }, 500);

$(...).fadeTo(500, 0.3);

Take focus off elements by fading them to 30% opacity in .5 seconds

Animation / Effects

Traversing Examples

$(“#myCell”)

Get previous table cells to #myCell.

<html><body>

<table><tr><td></td><td></td><td id=”myCell”></td><td></td>

</tr></table></body>

</html>

Traversing Examples

<html><body>

<table><tr><td></td><td></td><td id=”myCell”></td><td></td>

</tr></table></body>

</html>

$(“#myCell”)

Get previous table cells to #myCell.

Traversing Examples

.prevAll()

$(“#myCell”)

Get previous table cells to #myCell.

Traversing Examples

.prevAll()

<html><body>

<table><tr><td></td><td></td><td id=”myCell”></td><td></td>

</tr></table></body>

</html>

.andSelf();

<html><body>

<table></table><div>

<p>foo</p><span>bar</span>

</div></body>

</html>

$(“table”)

Move paragraphs to element with id “foo”

Traversing Examples

<html><body>

<table></table><div>

<p>foo</p><span>bar</span>

</div></body>

</html>

$(“table”)

Move paragraphs to element with id “foo”

Traversing Examples

.next()

$(“table”)

Move paragraphs to element with id “foo”

<html><body>

<table></table><div>

<p>foo</p><span>bar</span>

</div></body>

</html>

Traversing Examples

.next()

$(“table”)

Move paragraphs to element with id “foo”

Traversing Examples

.next().find(“p”);

<html><body>

<table></table><div>

<p>foo</p><span>bar</span>

</div></body>

</html>

Ajax Examples

Ajax Examples

$(...).get(“tag.php”, { “bar”: “baz” });

Post data, “bar” equals “baz” to tag.php using get.

Ajax Examples

$(...).get(“tag.php”, { “bar”: “baz” });

Post data, “bar” equals “baz” to tag.php using get.

Post data, “foo” equals “bar” to send.php, thenalert the response.

$.post(“send.php”, { foo: ”bar” }, function(response){

alert(response);});

Ajax Examples

Extending jQuery

$.fn.myPlugin = function(){return this.each(function(){

$(this).html(“you used myPlugin!”);});

});

<html><body>

<div></div><div></div>

</body></html>

Plugin Example

$.fn.myPlugin = function(){return this.each(function(){

$(this).html(“you used myPlugin!”);});

});

$(“div”).myPlugin();<html>

<body><div></div><div></div>

</body></html>

Plugin Example

$.fn.myPlugin = function(){return this.each(function(){

$(this).html(“you used myPlugin!”);});

});

<html><body>

<div>you used myPlugin!</div><div>you used myPlugin!</div>

</body></html>

$(“div”).myPlugin();

Plugin Example

Wait, There’s More!

jQuery isn’t only about simpler code

jQuery isn’t only about simpler codeand being more productive

jQuery isn’t only about simpler codeand being more productive

It is also about..

jQuery isn’t only about simpler codeand being more productive

It is also about..great community

support tutorials

plugins

open (free) license

test coverage books

speed

light weight code

Usage Across Top 10,000 Sites

http://trends.builtwith.com/javascript

Plugins

jQuery has hundreds of plugins athttp://plugins.jquery.com/

jQuery UI

Set of official user interface components at:http://jqueryui.com

http://forum.jquery.com

Support

http://docs.jquery.com/Discussion

jQuery general discussion mailing list

jQuery discussion docs page

jQuery IRC room#jquery on FreeNode.net

Books

http://www.amazon.com/gp/product/1847196705?ie=UTF8&tag=jacofalltrawe-20&linkCode=as2&camp=1789&creative=9325&creativeASIN=1847196705

http://www.amazon.com/gp/product/1933988355?ie=UTF8&tag=jacofalltrawe-20&linkCode=as2&camp=1789&creative=9325&creativeASIN=1933988355

Learning jQuery 1.3by Karl Swedberg

jQuery in ActionYahuda Katz

Thank you!

Marc Grabanski: http://marcgrabanski.com

Twitter: @1Marc