the dom scripting toolkit: jquery -...

92
The DOM Scripting Toolkit: jQuery Remy Sharp Left Logic

Upload: others

Post on 29-Mar-2020

8 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: The DOM Scripting Toolkit: jQuery - jaoo.dkjaoo.dk/dl/qcon-london-2008/slides/RemySharp_DOM_Toolkit_jQuery2.pdf · Why jQuery? • Lean API, makes your code smaller • Small (15k

The DOM Scripting Toolkit: jQueryRemy SharpLeft Logic

Page 2: The DOM Scripting Toolkit: jQuery - jaoo.dkjaoo.dk/dl/qcon-london-2008/slides/RemySharp_DOM_Toolkit_jQuery2.pdf · Why jQuery? • Lean API, makes your code smaller • Small (15k

Why JS Libraries?

• DOM scripting made easy

Page 3: The DOM Scripting Toolkit: jQuery - jaoo.dkjaoo.dk/dl/qcon-london-2008/slides/RemySharp_DOM_Toolkit_jQuery2.pdf · Why jQuery? • Lean API, makes your code smaller • Small (15k

Why JS Libraries?

• DOM scripting made easy

• Cross browser work done for you

Page 4: The DOM Scripting Toolkit: jQuery - jaoo.dkjaoo.dk/dl/qcon-london-2008/slides/RemySharp_DOM_Toolkit_jQuery2.pdf · Why jQuery? • Lean API, makes your code smaller • Small (15k

Why JS Libraries?

• DOM scripting made easy

• Cross browser work done for you

• Puts some fun back in to coding

Page 5: The DOM Scripting Toolkit: jQuery - jaoo.dkjaoo.dk/dl/qcon-london-2008/slides/RemySharp_DOM_Toolkit_jQuery2.pdf · Why jQuery? • Lean API, makes your code smaller • Small (15k

Why jQuery?

• Lean API, makes your code smaller

Page 6: The DOM Scripting Toolkit: jQuery - jaoo.dkjaoo.dk/dl/qcon-london-2008/slides/RemySharp_DOM_Toolkit_jQuery2.pdf · Why jQuery? • Lean API, makes your code smaller • Small (15k

Why jQuery?

• Lean API, makes your code smaller

• Small (15k gzip’d), encapsulated, friendly library - plays well!

Page 7: The DOM Scripting Toolkit: jQuery - jaoo.dkjaoo.dk/dl/qcon-london-2008/slides/RemySharp_DOM_Toolkit_jQuery2.pdf · Why jQuery? • Lean API, makes your code smaller • Small (15k

Why jQuery?

• Lean API, makes your code smaller

• Small (15k gzip’d), encapsulated, friendly library - plays well!

• Plugin API is really simple

Page 8: The DOM Scripting Toolkit: jQuery - jaoo.dkjaoo.dk/dl/qcon-london-2008/slides/RemySharp_DOM_Toolkit_jQuery2.pdf · Why jQuery? • Lean API, makes your code smaller • Small (15k

Why jQuery?

• Lean API, makes your code smaller

• Small (15k gzip’d), encapsulated, friendly library - plays well!

• Plugin API is really simple

• Large, active community

Page 9: The DOM Scripting Toolkit: jQuery - jaoo.dkjaoo.dk/dl/qcon-london-2008/slides/RemySharp_DOM_Toolkit_jQuery2.pdf · Why jQuery? • Lean API, makes your code smaller • Small (15k

Why jQuery?

• Lean API, makes your code smaller

• Small (15k gzip’d), encapsulated, friendly library - plays well!

• Plugin API is really simple

• Large, active community

• Big boys use it too: Google, BBC, Digg, Wordpress, Amazon, IBM.

Page 10: The DOM Scripting Toolkit: jQuery - jaoo.dkjaoo.dk/dl/qcon-london-2008/slides/RemySharp_DOM_Toolkit_jQuery2.pdf · Why jQuery? • Lean API, makes your code smaller • Small (15k

What’s in jQuery?

• Selectors & Chaining

• DOM manipulation

• Events

• Ajax

• Simple effects

Page 11: The DOM Scripting Toolkit: jQuery - jaoo.dkjaoo.dk/dl/qcon-london-2008/slides/RemySharp_DOM_Toolkit_jQuery2.pdf · Why jQuery? • Lean API, makes your code smaller • Small (15k

Selectors$(‘#emails a.subject’);

Page 12: The DOM Scripting Toolkit: jQuery - jaoo.dkjaoo.dk/dl/qcon-london-2008/slides/RemySharp_DOM_Toolkit_jQuery2.pdf · Why jQuery? • Lean API, makes your code smaller • Small (15k

Selectors

• “Find something, do something with it”

Page 13: The DOM Scripting Toolkit: jQuery - jaoo.dkjaoo.dk/dl/qcon-london-2008/slides/RemySharp_DOM_Toolkit_jQuery2.pdf · Why jQuery? • Lean API, makes your code smaller • Small (15k

Selectors

• “Find something, do something with it”

• The dollar function

Page 14: The DOM Scripting Toolkit: jQuery - jaoo.dkjaoo.dk/dl/qcon-london-2008/slides/RemySharp_DOM_Toolkit_jQuery2.pdf · Why jQuery? • Lean API, makes your code smaller • Small (15k

Selectors

• “Find something, do something with it”

• The dollar function

• CSS 1-3 selectors at the core of jQuery

Page 15: The DOM Scripting Toolkit: jQuery - jaoo.dkjaoo.dk/dl/qcon-london-2008/slides/RemySharp_DOM_Toolkit_jQuery2.pdf · Why jQuery? • Lean API, makes your code smaller • Small (15k

Selectors

• “Find something, do something with it”

• The dollar function

• CSS 1-3 selectors at the core of jQuery

• Custom selectors

Page 16: The DOM Scripting Toolkit: jQuery - jaoo.dkjaoo.dk/dl/qcon-london-2008/slides/RemySharp_DOM_Toolkit_jQuery2.pdf · Why jQuery? • Lean API, makes your code smaller • Small (15k

CSS Selectors

$(‘div’)

Page 17: The DOM Scripting Toolkit: jQuery - jaoo.dkjaoo.dk/dl/qcon-london-2008/slides/RemySharp_DOM_Toolkit_jQuery2.pdf · Why jQuery? • Lean API, makes your code smaller • Small (15k

CSS Selectors

$(‘div’)

$(‘div.foo’)

Page 18: The DOM Scripting Toolkit: jQuery - jaoo.dkjaoo.dk/dl/qcon-london-2008/slides/RemySharp_DOM_Toolkit_jQuery2.pdf · Why jQuery? • Lean API, makes your code smaller • Small (15k

CSS Selectors

$(‘div’)

$(‘div.foo’)

$(‘a[type=”application/pdf”]’)

Page 19: The DOM Scripting Toolkit: jQuery - jaoo.dkjaoo.dk/dl/qcon-london-2008/slides/RemySharp_DOM_Toolkit_jQuery2.pdf · Why jQuery? • Lean API, makes your code smaller • Small (15k

CSS Selectors

$(‘div’)

$(‘div.foo’)

$(‘a[type=”application/pdf”]’)

$(‘tr td:first-child’)

Page 20: The DOM Scripting Toolkit: jQuery - jaoo.dkjaoo.dk/dl/qcon-london-2008/slides/RemySharp_DOM_Toolkit_jQuery2.pdf · Why jQuery? • Lean API, makes your code smaller • Small (15k

Custom Selectors

$(‘div:visible’)

Page 21: The DOM Scripting Toolkit: jQuery - jaoo.dkjaoo.dk/dl/qcon-london-2008/slides/RemySharp_DOM_Toolkit_jQuery2.pdf · Why jQuery? • Lean API, makes your code smaller • Small (15k

Custom Selectors

$(‘div:visible’)

$(‘:animated’)

Page 22: The DOM Scripting Toolkit: jQuery - jaoo.dkjaoo.dk/dl/qcon-london-2008/slides/RemySharp_DOM_Toolkit_jQuery2.pdf · Why jQuery? • Lean API, makes your code smaller • Small (15k

Custom Selectors

$(‘div:visible’)

$(‘:animated’)

$(‘:input’)

Page 23: The DOM Scripting Toolkit: jQuery - jaoo.dkjaoo.dk/dl/qcon-london-2008/slides/RemySharp_DOM_Toolkit_jQuery2.pdf · Why jQuery? • Lean API, makes your code smaller • Small (15k

Custom Selectors

$(‘div:visible’)

$(‘:animated’)

$(‘:input’)

$(‘tr:odd’)

Page 24: The DOM Scripting Toolkit: jQuery - jaoo.dkjaoo.dk/dl/qcon-london-2008/slides/RemySharp_DOM_Toolkit_jQuery2.pdf · Why jQuery? • Lean API, makes your code smaller • Small (15k

Selector Performance

$(‘#email’) // same as getElementById

Page 25: The DOM Scripting Toolkit: jQuery - jaoo.dkjaoo.dk/dl/qcon-london-2008/slides/RemySharp_DOM_Toolkit_jQuery2.pdf · Why jQuery? • Lean API, makes your code smaller • Small (15k

Selector Performance

$(‘#email’) // same as getElementById

$(‘.email’) // slower on a big DOM

Page 26: The DOM Scripting Toolkit: jQuery - jaoo.dkjaoo.dk/dl/qcon-london-2008/slides/RemySharp_DOM_Toolkit_jQuery2.pdf · Why jQuery? • Lean API, makes your code smaller • Small (15k

Selector Performance

$(‘#email’) // same as getElementById

$(‘.email’) // slower on a big DOM

// using context$(‘#emails .subject’)$(‘.subject’, this)

Page 27: The DOM Scripting Toolkit: jQuery - jaoo.dkjaoo.dk/dl/qcon-london-2008/slides/RemySharp_DOM_Toolkit_jQuery2.pdf · Why jQuery? • Lean API, makes your code smaller • Small (15k

Selector Performance

$(‘#email’) // same as getElementById

$(‘.email’) // slower on a big DOM

// using context$(‘#emails .subject’)$(‘.subject’, this)

// Cachingvar subjects = $(‘#emails .subject’);

Page 28: The DOM Scripting Toolkit: jQuery - jaoo.dkjaoo.dk/dl/qcon-london-2008/slides/RemySharp_DOM_Toolkit_jQuery2.pdf · Why jQuery? • Lean API, makes your code smaller • Small (15k

Chaining$(‘#emails .subjects’) .click() .addClass(‘read’);

Page 29: The DOM Scripting Toolkit: jQuery - jaoo.dkjaoo.dk/dl/qcon-london-2008/slides/RemySharp_DOM_Toolkit_jQuery2.pdf · Why jQuery? • Lean API, makes your code smaller • Small (15k

Chaining

• jQuery returns itself *

* except when requesting string values, such as .css() or .val()

Page 30: The DOM Scripting Toolkit: jQuery - jaoo.dkjaoo.dk/dl/qcon-london-2008/slides/RemySharp_DOM_Toolkit_jQuery2.pdf · Why jQuery? • Lean API, makes your code smaller • Small (15k

Chaining

• jQuery returns itself *

• We can use the selector once, and keep manipulating

* except when requesting string values, such as .css() or .val()

Page 31: The DOM Scripting Toolkit: jQuery - jaoo.dkjaoo.dk/dl/qcon-london-2008/slides/RemySharp_DOM_Toolkit_jQuery2.pdf · Why jQuery? • Lean API, makes your code smaller • Small (15k

Chaining

• jQuery returns itself *

• We can use the selector once, and keep manipulating

• Can reduce size of our code

* except when requesting string values, such as .css() or .val()

Page 32: The DOM Scripting Toolkit: jQuery - jaoo.dkjaoo.dk/dl/qcon-london-2008/slides/RemySharp_DOM_Toolkit_jQuery2.pdf · Why jQuery? • Lean API, makes your code smaller • Small (15k

Chaining in Action

var image = new Image();

$(image) .load(function () { // show new image }) .error(function () { // handle error }) .attr(‘src’, ‘/path/to/large-image.jpg’);

Page 33: The DOM Scripting Toolkit: jQuery - jaoo.dkjaoo.dk/dl/qcon-london-2008/slides/RemySharp_DOM_Toolkit_jQuery2.pdf · Why jQuery? • Lean API, makes your code smaller • Small (15k

More Chaining

// simple tabs

$(‘a.tab’).click(function () { $(tabs) .hide() .filter(this.hash) .show();});

Page 34: The DOM Scripting Toolkit: jQuery - jaoo.dkjaoo.dk/dl/qcon-london-2008/slides/RemySharp_DOM_Toolkit_jQuery2.pdf · Why jQuery? • Lean API, makes your code smaller • Small (15k

Collections$(‘#emails .subjects’).each(fn)

Page 35: The DOM Scripting Toolkit: jQuery - jaoo.dkjaoo.dk/dl/qcon-london-2008/slides/RemySharp_DOM_Toolkit_jQuery2.pdf · Why jQuery? • Lean API, makes your code smaller • Small (15k

Collections

• .each(fn)Iterates through a collection applying the method

Page 36: The DOM Scripting Toolkit: jQuery - jaoo.dkjaoo.dk/dl/qcon-london-2008/slides/RemySharp_DOM_Toolkit_jQuery2.pdf · Why jQuery? • Lean API, makes your code smaller • Small (15k

Collections

• .each(fn)Iterates through a collection applying the method

• .map(fn)Iterates through collection, returning array from fn

Page 37: The DOM Scripting Toolkit: jQuery - jaoo.dkjaoo.dk/dl/qcon-london-2008/slides/RemySharp_DOM_Toolkit_jQuery2.pdf · Why jQuery? • Lean API, makes your code smaller • Small (15k

Working the DOM$(this).addClass(‘read’).next().show();

Page 38: The DOM Scripting Toolkit: jQuery - jaoo.dkjaoo.dk/dl/qcon-london-2008/slides/RemySharp_DOM_Toolkit_jQuery2.pdf · Why jQuery? • Lean API, makes your code smaller • Small (15k

DOM Walking

• Navigation: children, parent, parents, siblings, next, prev

Page 39: The DOM Scripting Toolkit: jQuery - jaoo.dkjaoo.dk/dl/qcon-london-2008/slides/RemySharp_DOM_Toolkit_jQuery2.pdf · Why jQuery? • Lean API, makes your code smaller • Small (15k

DOM Walking

• Navigation: children, parent, parents, siblings, next, prev

• Filters: filter, find, not, eq

Page 40: The DOM Scripting Toolkit: jQuery - jaoo.dkjaoo.dk/dl/qcon-london-2008/slides/RemySharp_DOM_Toolkit_jQuery2.pdf · Why jQuery? • Lean API, makes your code smaller • Small (15k

DOM Walking

• Navigation: children, parent, parents, siblings, next, prev

• Filters: filter, find, not, eq

• Collections: add, end

Page 41: The DOM Scripting Toolkit: jQuery - jaoo.dkjaoo.dk/dl/qcon-london-2008/slides/RemySharp_DOM_Toolkit_jQuery2.pdf · Why jQuery? • Lean API, makes your code smaller • Small (15k

DOM Walking

• Navigation: children, parent, parents, siblings, next, prev

• Filters: filter, find, not, eq

• Collections: add, end

• Tests: is

Page 42: The DOM Scripting Toolkit: jQuery - jaoo.dkjaoo.dk/dl/qcon-london-2008/slides/RemySharp_DOM_Toolkit_jQuery2.pdf · Why jQuery? • Lean API, makes your code smaller • Small (15k

DOM Walking

• Navigation: children, parent, parents, siblings, next, prev

• Filters: filter, find, not, eq

• Collections: add, end

• Tests: is

$(‘div’) .find(‘a.subject’) .click(fn) .end() // strip filter .eq(0) // like :first .addClass(‘highlight’);

Page 43: The DOM Scripting Toolkit: jQuery - jaoo.dkjaoo.dk/dl/qcon-london-2008/slides/RemySharp_DOM_Toolkit_jQuery2.pdf · Why jQuery? • Lean API, makes your code smaller • Small (15k

Manipulation

• Inserting: after, append, before, prepend, html, text, wrap, clone

Page 44: The DOM Scripting Toolkit: jQuery - jaoo.dkjaoo.dk/dl/qcon-london-2008/slides/RemySharp_DOM_Toolkit_jQuery2.pdf · Why jQuery? • Lean API, makes your code smaller • Small (15k

Manipulation

• Inserting: after, append, before, prepend, html, text, wrap, clone

• Clearing: empty, remove, removeAttr

Page 45: The DOM Scripting Toolkit: jQuery - jaoo.dkjaoo.dk/dl/qcon-london-2008/slides/RemySharp_DOM_Toolkit_jQuery2.pdf · Why jQuery? • Lean API, makes your code smaller • Small (15k

Manipulation

• Inserting: after, append, before, prepend, html, text, wrap, clone

• Clearing: empty, remove, removeAttr

• Style: attr, addClass, removeClass, toggleClass, css, hide, show, toggle

Page 46: The DOM Scripting Toolkit: jQuery - jaoo.dkjaoo.dk/dl/qcon-london-2008/slides/RemySharp_DOM_Toolkit_jQuery2.pdf · Why jQuery? • Lean API, makes your code smaller • Small (15k

Manipulation

• Inserting: after, append, before, prepend, html, text, wrap, clone

• Clearing: empty, remove, removeAttr

• Style: attr, addClass, removeClass, toggleClass, css, hide, show, toggle

var a = $(document.createElement(‘a’)); // or $(‘<a>’)a.css(‘opacity’, 0.6).text(‘My Link’).attr(‘href’, ‘/home/’);$(‘div’).empty().append(a);

Page 47: The DOM Scripting Toolkit: jQuery - jaoo.dkjaoo.dk/dl/qcon-london-2008/slides/RemySharp_DOM_Toolkit_jQuery2.pdf · Why jQuery? • Lean API, makes your code smaller • Small (15k

Data

• Storing data directly against elements can cause leaks

Page 48: The DOM Scripting Toolkit: jQuery - jaoo.dkjaoo.dk/dl/qcon-london-2008/slides/RemySharp_DOM_Toolkit_jQuery2.pdf · Why jQuery? • Lean API, makes your code smaller • Small (15k

Data

• Storing data directly against elements can cause leaks

• .data() clean way of linking data to element

Page 49: The DOM Scripting Toolkit: jQuery - jaoo.dkjaoo.dk/dl/qcon-london-2008/slides/RemySharp_DOM_Toolkit_jQuery2.pdf · Why jQuery? • Lean API, makes your code smaller • Small (15k

Data

• Storing data directly against elements can cause leaks

• .data() clean way of linking data to element

• All handled by jQuery’s garbage collection

Page 50: The DOM Scripting Toolkit: jQuery - jaoo.dkjaoo.dk/dl/qcon-london-2008/slides/RemySharp_DOM_Toolkit_jQuery2.pdf · Why jQuery? • Lean API, makes your code smaller • Small (15k

Data

• Storing data directly against elements can cause leaks

• .data() clean way of linking data to element

• All handled by jQuery’s garbage collection

$(this).data(‘type’, ‘forward’);

var types = $(‘a.subject’).data(‘type’);

$(‘a.subject’).removeData();

Page 51: The DOM Scripting Toolkit: jQuery - jaoo.dkjaoo.dk/dl/qcon-london-2008/slides/RemySharp_DOM_Toolkit_jQuery2.pdf · Why jQuery? • Lean API, makes your code smaller • Small (15k

Events$(‘a.subject’).click();

Page 52: The DOM Scripting Toolkit: jQuery - jaoo.dkjaoo.dk/dl/qcon-london-2008/slides/RemySharp_DOM_Toolkit_jQuery2.pdf · Why jQuery? • Lean API, makes your code smaller • Small (15k

DOM Ready

• Most common event: DOM ready

Page 53: The DOM Scripting Toolkit: jQuery - jaoo.dkjaoo.dk/dl/qcon-london-2008/slides/RemySharp_DOM_Toolkit_jQuery2.pdf · Why jQuery? • Lean API, makes your code smaller • Small (15k

DOM Ready

• Most common event: DOM ready

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

// or as a shortcut:

$(function () {})

Page 54: The DOM Scripting Toolkit: jQuery - jaoo.dkjaoo.dk/dl/qcon-london-2008/slides/RemySharp_DOM_Toolkit_jQuery2.pdf · Why jQuery? • Lean API, makes your code smaller • Small (15k

Binding

• Manages events and garbage collection

Page 55: The DOM Scripting Toolkit: jQuery - jaoo.dkjaoo.dk/dl/qcon-london-2008/slides/RemySharp_DOM_Toolkit_jQuery2.pdf · Why jQuery? • Lean API, makes your code smaller • Small (15k

Binding

• Manages events and garbage collection

• Event functions are bound to the elements matched selector

Page 56: The DOM Scripting Toolkit: jQuery - jaoo.dkjaoo.dk/dl/qcon-london-2008/slides/RemySharp_DOM_Toolkit_jQuery2.pdf · Why jQuery? • Lean API, makes your code smaller • Small (15k

Binding

• Manages events and garbage collection

• Event functions are bound to the elements matched selector

• Also supports .one()

Page 57: The DOM Scripting Toolkit: jQuery - jaoo.dkjaoo.dk/dl/qcon-london-2008/slides/RemySharp_DOM_Toolkit_jQuery2.pdf · Why jQuery? • Lean API, makes your code smaller • Small (15k

Binding

• Manages events and garbage collection

• Event functions are bound to the elements matched selector

• Also supports .one()

$(‘a.reveal’).bind(‘click’, function(event) { // ‘this’ refers to the current element // this.hash is #moreInfo - mapping to real element $(this.hash).slideDown();}).filter(‘:first’).trigger(‘click’);

Page 58: The DOM Scripting Toolkit: jQuery - jaoo.dkjaoo.dk/dl/qcon-london-2008/slides/RemySharp_DOM_Toolkit_jQuery2.pdf · Why jQuery? • Lean API, makes your code smaller • Small (15k

Helpers

• Mouse: click, dlbclick, mouseover, toggle, hover, etc.

Page 59: The DOM Scripting Toolkit: jQuery - jaoo.dkjaoo.dk/dl/qcon-london-2008/slides/RemySharp_DOM_Toolkit_jQuery2.pdf · Why jQuery? • Lean API, makes your code smaller • Small (15k

Helpers

• Mouse: click, dlbclick, mouseover, toggle, hover, etc.

• Keyboard: keydown, keyup, keypress

Page 60: The DOM Scripting Toolkit: jQuery - jaoo.dkjaoo.dk/dl/qcon-london-2008/slides/RemySharp_DOM_Toolkit_jQuery2.pdf · Why jQuery? • Lean API, makes your code smaller • Small (15k

Helpers

• Mouse: click, dlbclick, mouseover, toggle, hover, etc.

• Keyboard: keydown, keyup, keypress

• Forms: change, select, submit, focus, blur

Page 61: The DOM Scripting Toolkit: jQuery - jaoo.dkjaoo.dk/dl/qcon-london-2008/slides/RemySharp_DOM_Toolkit_jQuery2.pdf · Why jQuery? • Lean API, makes your code smaller • Small (15k

Helpers

• Mouse: click, dlbclick, mouseover, toggle, hover, etc.

• Keyboard: keydown, keyup, keypress

• Forms: change, select, submit, focus, blur

• Windows: scroll

Page 62: The DOM Scripting Toolkit: jQuery - jaoo.dkjaoo.dk/dl/qcon-london-2008/slides/RemySharp_DOM_Toolkit_jQuery2.pdf · Why jQuery? • Lean API, makes your code smaller • Small (15k

Helpers

• Mouse: click, dlbclick, mouseover, toggle, hover, etc.

• Keyboard: keydown, keyup, keypress

• Forms: change, select, submit, focus, blur

• Windows: scroll

• Windows, images, scripts: load, error

Page 63: The DOM Scripting Toolkit: jQuery - jaoo.dkjaoo.dk/dl/qcon-london-2008/slides/RemySharp_DOM_Toolkit_jQuery2.pdf · Why jQuery? • Lean API, makes your code smaller • Small (15k

Custom Events

• Roll your own

Page 64: The DOM Scripting Toolkit: jQuery - jaoo.dkjaoo.dk/dl/qcon-london-2008/slides/RemySharp_DOM_Toolkit_jQuery2.pdf · Why jQuery? • Lean API, makes your code smaller • Small (15k

Custom Events

• Roll your own

• Bind to element (or elements)

Page 65: The DOM Scripting Toolkit: jQuery - jaoo.dkjaoo.dk/dl/qcon-london-2008/slides/RemySharp_DOM_Toolkit_jQuery2.pdf · Why jQuery? • Lean API, makes your code smaller • Small (15k

Custom Events

• Roll your own

• Bind to element (or elements)

• Trigger them later and pass data

Page 66: The DOM Scripting Toolkit: jQuery - jaoo.dkjaoo.dk/dl/qcon-london-2008/slides/RemySharp_DOM_Toolkit_jQuery2.pdf · Why jQuery? • Lean API, makes your code smaller • Small (15k

Custom Events

• Roll your own

• Bind to element (or elements)

• Trigger them later and pass data

$(‘div.myWidget’).trigger(‘foo’, [123/*id*/]);// id access via // .bind(‘foo’, function (event, id, etc) {})

Page 67: The DOM Scripting Toolkit: jQuery - jaoo.dkjaoo.dk/dl/qcon-london-2008/slides/RemySharp_DOM_Toolkit_jQuery2.pdf · Why jQuery? • Lean API, makes your code smaller • Small (15k

Event Namespaces

• Support for event subsets via namespaces

Page 68: The DOM Scripting Toolkit: jQuery - jaoo.dkjaoo.dk/dl/qcon-london-2008/slides/RemySharp_DOM_Toolkit_jQuery2.pdf · Why jQuery? • Lean API, makes your code smaller • Small (15k

Event Namespaces

• Support for event subsets via namespaces

• If you don’t want to unbind all type X events - use namespaces

Page 69: The DOM Scripting Toolkit: jQuery - jaoo.dkjaoo.dk/dl/qcon-london-2008/slides/RemySharp_DOM_Toolkit_jQuery2.pdf · Why jQuery? • Lean API, makes your code smaller • Small (15k

Event Namespaces

• Support for event subsets via namespaces

• If you don’t want to unbind all type X events - use namespaces

$(‘a’).bind(‘click.foo’, fn);

$(‘a’).unbind(‘.foo’);

Page 70: The DOM Scripting Toolkit: jQuery - jaoo.dkjaoo.dk/dl/qcon-london-2008/slides/RemySharp_DOM_Toolkit_jQuery2.pdf · Why jQuery? • Lean API, makes your code smaller • Small (15k

Ajax$.ajax({ url : ‘/foo’, success : bar });

Page 71: The DOM Scripting Toolkit: jQuery - jaoo.dkjaoo.dk/dl/qcon-london-2008/slides/RemySharp_DOM_Toolkit_jQuery2.pdf · Why jQuery? • Lean API, makes your code smaller • Small (15k

Ajax Made Easy

• Cross browser, no hassle.

Page 72: The DOM Scripting Toolkit: jQuery - jaoo.dkjaoo.dk/dl/qcon-london-2008/slides/RemySharp_DOM_Toolkit_jQuery2.pdf · Why jQuery? • Lean API, makes your code smaller • Small (15k

Ajax Made Easy

• Cross browser, no hassle.

• $.ajax does it all

Page 73: The DOM Scripting Toolkit: jQuery - jaoo.dkjaoo.dk/dl/qcon-london-2008/slides/RemySharp_DOM_Toolkit_jQuery2.pdf · Why jQuery? • Lean API, makes your code smaller • Small (15k

Ajax Made Easy

• Cross browser, no hassle.

• $.ajax does it all

• Helpers $.get, $.getJSON, $.getScript, $.post, $.load

Page 74: The DOM Scripting Toolkit: jQuery - jaoo.dkjaoo.dk/dl/qcon-london-2008/slides/RemySharp_DOM_Toolkit_jQuery2.pdf · Why jQuery? • Lean API, makes your code smaller • Small (15k

Ajax Made Easy

• Cross browser, no hassle.

• $.ajax does it all

• Helpers $.get, $.getJSON, $.getScript, $.post, $.load

• All Ajax requests sends:X-Requested-With = XMLHttpRequest

Page 75: The DOM Scripting Toolkit: jQuery - jaoo.dkjaoo.dk/dl/qcon-london-2008/slides/RemySharp_DOM_Toolkit_jQuery2.pdf · Why jQuery? • Lean API, makes your code smaller • Small (15k

$.ajax$(‘form.register’).submit(function () { var el = this; // cache for use in success function $.ajax({ url : $(this).attr(‘action’), data : { ‘username’ : $(‘input.username’).val() }, // ‘this’ is the link beforeSend : showValidatingMsg, // function dataType : ‘json’, type : ‘post’, success : function (data) { // do something with data - show validation message }, error : function (xhr, status, e) { // handle the error - inform the user of problem console.log(xhr, status, e); } }); return false; // cancel default browser action});

Page 76: The DOM Scripting Toolkit: jQuery - jaoo.dkjaoo.dk/dl/qcon-london-2008/slides/RemySharp_DOM_Toolkit_jQuery2.pdf · Why jQuery? • Lean API, makes your code smaller • Small (15k

Effects$(this).slideDown();

Page 77: The DOM Scripting Toolkit: jQuery - jaoo.dkjaoo.dk/dl/qcon-london-2008/slides/RemySharp_DOM_Toolkit_jQuery2.pdf · Why jQuery? • Lean API, makes your code smaller • Small (15k

Base Effects

$(‘div:hidden’).show(200, fn);$(‘div:visible’).hide(200);$(‘div’).fadeIn(200);$(‘div’).slideDown(100);

Page 78: The DOM Scripting Toolkit: jQuery - jaoo.dkjaoo.dk/dl/qcon-london-2008/slides/RemySharp_DOM_Toolkit_jQuery2.pdf · Why jQuery? • Lean API, makes your code smaller • Small (15k

Base Effects

$(‘div:hidden’).show(200, fn);$(‘div:visible’).hide(200);$(‘div’).fadeIn(200);$(‘div’).slideDown(100);

$(‘div’).animate({ ‘opacity’ : 0.5, ‘left’ : ‘-=10px’ }, ‘slow’, fn)

Page 79: The DOM Scripting Toolkit: jQuery - jaoo.dkjaoo.dk/dl/qcon-london-2008/slides/RemySharp_DOM_Toolkit_jQuery2.pdf · Why jQuery? • Lean API, makes your code smaller • Small (15k

Utilities$.browser.version

Page 80: The DOM Scripting Toolkit: jQuery - jaoo.dkjaoo.dk/dl/qcon-london-2008/slides/RemySharp_DOM_Toolkit_jQuery2.pdf · Why jQuery? • Lean API, makes your code smaller • Small (15k

Utilities

• Iterators: each, map, grep

Page 81: The DOM Scripting Toolkit: jQuery - jaoo.dkjaoo.dk/dl/qcon-london-2008/slides/RemySharp_DOM_Toolkit_jQuery2.pdf · Why jQuery? • Lean API, makes your code smaller • Small (15k

Utilities

• Iterators: each, map, grep

• Browser versions, model and boxModel support

Page 82: The DOM Scripting Toolkit: jQuery - jaoo.dkjaoo.dk/dl/qcon-london-2008/slides/RemySharp_DOM_Toolkit_jQuery2.pdf · Why jQuery? • Lean API, makes your code smaller • Small (15k

Utilities

• Iterators: each, map, grep

• Browser versions, model and boxModel support

• isFunction

Page 83: The DOM Scripting Toolkit: jQuery - jaoo.dkjaoo.dk/dl/qcon-london-2008/slides/RemySharp_DOM_Toolkit_jQuery2.pdf · Why jQuery? • Lean API, makes your code smaller • Small (15k

Core Utilities

• jQuery can plays with others!

Page 84: The DOM Scripting Toolkit: jQuery - jaoo.dkjaoo.dk/dl/qcon-london-2008/slides/RemySharp_DOM_Toolkit_jQuery2.pdf · Why jQuery? • Lean API, makes your code smaller • Small (15k

Core Utilities

• jQuery can plays with others!

$j = $.noConflict();$j === $ // false

Page 85: The DOM Scripting Toolkit: jQuery - jaoo.dkjaoo.dk/dl/qcon-london-2008/slides/RemySharp_DOM_Toolkit_jQuery2.pdf · Why jQuery? • Lean API, makes your code smaller • Small (15k

Core Utilities

• Extend jQuery, merge objects and create settings from defaults

Page 86: The DOM Scripting Toolkit: jQuery - jaoo.dkjaoo.dk/dl/qcon-london-2008/slides/RemySharp_DOM_Toolkit_jQuery2.pdf · Why jQuery? • Lean API, makes your code smaller • Small (15k

Core Utilities

• Extend jQuery, merge objects and create settings from defaults

var defaults = { ‘limit’ : 10, ‘dataType’ : ‘json’ };var options = { ‘limit’ : 5, ‘username’ : ‘remy’ };

var settings = $.extend({}, defaults, options);

// settings = { ‘limit’ : 5, ‘dataType’ : ‘json’, ‘username’ : ‘remy’ }

Page 87: The DOM Scripting Toolkit: jQuery - jaoo.dkjaoo.dk/dl/qcon-london-2008/slides/RemySharp_DOM_Toolkit_jQuery2.pdf · Why jQuery? • Lean API, makes your code smaller • Small (15k

Plugins$(‘#emails .subjects’).doMagic()

Page 88: The DOM Scripting Toolkit: jQuery - jaoo.dkjaoo.dk/dl/qcon-london-2008/slides/RemySharp_DOM_Toolkit_jQuery2.pdf · Why jQuery? • Lean API, makes your code smaller • Small (15k

Plugins

• Simple to write

Page 89: The DOM Scripting Toolkit: jQuery - jaoo.dkjaoo.dk/dl/qcon-london-2008/slides/RemySharp_DOM_Toolkit_jQuery2.pdf · Why jQuery? • Lean API, makes your code smaller • Small (15k

Plugins

• Simple to write

• Makes your code more reusable

Page 90: The DOM Scripting Toolkit: jQuery - jaoo.dkjaoo.dk/dl/qcon-london-2008/slides/RemySharp_DOM_Toolkit_jQuery2.pdf · Why jQuery? • Lean API, makes your code smaller • Small (15k

Plugins

• Simple to write

• Makes your code more reusable

• Don’t break the chain!

Page 91: The DOM Scripting Toolkit: jQuery - jaoo.dkjaoo.dk/dl/qcon-london-2008/slides/RemySharp_DOM_Toolkit_jQuery2.pdf · Why jQuery? • Lean API, makes your code smaller • Small (15k

Simple Plugin

// wrap in anonymous function to use $(function ($) {

$.fn.log = function () { console.log(this); // returning continues the chain return this; // this is the jQuery collection };

})(jQuery);