SlideShare a Scribd company logo
1 of 195
Download to read offline
THE jOUERY COMPANY




                                  http://appendto.com




Copyright © 2010 appendTo, LLC.
OSCON jQuery Training




                        Introduction to jQuery




 Copyright © 2010 appendTo, LLC.
                                                 THE jOUERY COMPANY
OSCON jQuery Training



                        Introduction to jQuery
‣ The jQuery Project

‣ Including jQuery

‣ The jQuery Object

‣ Introduction to JavaScript

‣ Lifecycle of a Page




  Copyright © 2010 appendTo, LLC.
                                                 THE jOUERY COMPANY
OSCON jQuery Training




                         The jQuery Project




 Copyright © 2010 appendTo, LLC.
                                              THE jOUERY COMPANY
OSCON jQuery Training




                                       jQuery Project - jquery.org
                                    (Software Freedom Conservancy)


                                   jQuery Core          jQuery UI

                                   jquery.com         jqueryUI.com




                                     Sizzle JS            QUnit

                                   sizzlejs.com         qunitjs.com



 Copyright © 2010 appendTo, LLC.
                                                                      THE jOUERY COMPANY
OSCON jQuery Training




‣ jquery.com        Downloading


‣ api.jquery.com          Documentation


‣ forum.jquery.com             Community


‣ meetups.jquery.com                 Local Community


‣ plugins.jquery.com                Extending


‣ jqueryui.com         Project Supported UI Library




  Copyright © 2010 appendTo, LLC.
                                                       THE jOUERY COMPANY
OSCON jQuery Training




                               Including jQuery




 Copyright © 2010 appendTo, LLC.
                                                  THE jOUERY COMPANY
OSCON jQuery Training



                                    Locations
‣ http://code.jquery.com/jquery-1.4.2.min.js

‣ SSL vs. Non SSL?

‣ src=“//code.jquery.com/jquery-1.4.2.min.js”




  Copyright © 2010 appendTo, LLC.
                                                THE jOUERY COMPANY
OSCON jQuery Training



                                   Source




                     Minified
 Copyright © 2010 appendTo, LLC.
                                       THE jOUERY COMPANY
OSCON jQuery Training




                              The jQuery Object
function jQuery(selector) {
  ...
}

// Select an element with jQuery
jQuery(‘body’);

// Use the $ for brevity
var $ = jQuery;
$(‘body’);




 Copyright © 2010 appendTo, LLC.
                                                  THE jOUERY COMPANY
OSCON jQuery Training




              Introduction to JavaScript




 Copyright © 2010 appendTo, LLC.
                                       THE jOUERY COMPANY
OSCON jQuery Training



                  Introduction to JavaScript
‣ Script blocks

‣ Quotes and Whitespace

‣ Variables

‣ Functions

‣ Object-Hash

‣ Objects




  Copyright © 2010 appendTo, LLC.
                                               THE jOUERY COMPANY
OSCON jQuery Training



                                    Script Blocks
‣ Scripts can be included inline

‣ <script type=”text/javascript”>
    // Your script here
 </script>

‣ Or externally

‣ <script src=”url-to-script.js” type=”text/javascript”></script>




  Copyright © 2010 appendTo, LLC.
                                                                    THE jOUERY COMPANY
OSCON jQuery Training




                         Quotes & Whitespace
// Single Quotes
var name = ‘John’;

// Double Quotes
var name = “John”;

// Whitespace
var     name                       =   ‘John’;

// Terminate statements with a semi colon;
// Will work, but bad practice!
var name = ‘John’

 Copyright © 2010 appendTo, LLC.
                                                 THE jOUERY COMPANY
OSCON jQuery Training



                                    Variables
‣ Variable names may include a-zA-Z0-9_$ as valid characters

‣ Variable scope is applied through the use of the var keyword

‣ Variables have type:

  ‣ object, number, string, boolean

  ‣ array(object), function(object)




  Copyright © 2010 appendTo, LLC.
                                                                 THE jOUERY COMPANY
OSCON jQuery Training




                                   Variables
// String
var name = ‘John’;

// Integer(number)
var age = 30;

// Array
var children = [‘Jane’, ‘Jimmy’];

// Boolean
var isMarried = true;


 Copyright © 2010 appendTo, LLC.
                                               THE jOUERY COMPANY
OSCON jQuery Training




                                   Functions
function alertName() {
    alert(‘Hello John’);
}

// Accept arguments
function alertName(name) {
    alert(‘Hello ‘ + name);
}

// Call the function
alertName(‘John’); //Hello John



 Copyright © 2010 appendTo, LLC.
                                               THE jOUERY COMPANY
OSCON jQuery Training




                                   Functions
// Function assignment
var alertName = function(name) {
    alert(‘Hello ‘ + name);
}

// Call the function
alertName(‘John’); //Hello John




 Copyright © 2010 appendTo, LLC.
                                               THE jOUERY COMPANY
OSCON jQuery Training




                                   Variable Scope
var name = ‘John’;

function myFunction() {
    alert(‘Name is: ‘ + name);
}

...

myFunction(); //Name is John




 Copyright © 2010 appendTo, LLC.
                                                    THE jOUERY COMPANY
OSCON jQuery Training




                                   Variable Scope
var name = ‘John’;

function myFunction() {
    var name = ‘Jim’;
    alert(‘Name is: ‘ + name);
}




 Copyright © 2010 appendTo, LLC.
                                                    THE jOUERY COMPANY
OSCON jQuery Training




             Object-hash (Object Literal)
// Empty object
var person = {};

// Object-hash may contain key/values
var person = {
    name: ‘John’,
    age: 30,
    children: [‘Jane’, ‘Jimmy’],
    isMarried: true
};




 Copyright © 2010 appendTo, LLC.
                                        THE jOUERY COMPANY
OSCON jQuery Training




                                   Object
var person = {
    name: ‘John’,
    age: 30,
    introduceYourself: function() {
       alert(this.name + ‘ is ‘ + this.age);
    }
};

person.introduceYourself();             //John is 30




 Copyright © 2010 appendTo, LLC.
                                                       THE jOUERY COMPANY
OSCON jQuery Training




                            Lifecycle of a Page




 Copyright © 2010 appendTo, LLC.
                                                  THE jOUERY COMPANY
OSCON jQuery Training



                               Lifecycle of a Page
‣ Initial HTTP Request

‣ Load Scripts, Stylesheets and Images

‣ Scripts block!

‣ Head first style, scripts later




  Copyright © 2010 appendTo, LLC.
                                                     THE jOUERY COMPANY
OSCON jQuery Training




                                   Page Load
<!doctype html>
<html><head>
    <link href=”style.css” rel=”stylesheet” />
    <script src=”jquery-1.4.2.js”></script>
    <script type=”text/javascript”>
        $(‘p’).css(‘color’, ‘red’); //magic
    </script>
</head> <body>
    <p>Hello world!</p>
</body></html>




 Copyright © 2010 appendTo, LLC.
                                               THE jOUERY COMPANY
OSCON jQuery Training




                                   DOM Ready
// Callback function
function domIsReady() {
  $(‘body’).append(‘Hello world’); //magic
}

$(document).ready(domIsReady);




 Copyright © 2010 appendTo, LLC.
                                               THE jOUERY COMPANY
OSCON jQuery Training




                                   Page Load
<!doctype html>
<html><head>
    <link href=”style.css” rel=”stylesheet” />
    <script src=”jquery-1.4.2.js”></script>
    <script type=”text/javascript”>
        function domIsReady() {
           $(‘p’).css(‘color’, ‘red’); //magic
        }
        $(document).ready(domIsReady);
    </script>
</head> <body>
    <p>Hello world!</p>
</body></html>
 Copyright © 2010 appendTo, LLC.
                                               THE jOUERY COMPANY
OSCON jQuery Training




                                   Page Load
<!doctype html>
<html><head>
    <link href=”style.css” rel=”stylesheet” />
</head><body>
<p>Hello world!</p>
<script src=”jquery-1.4.2.js”></script>
    <script type=”text/javascript”>
        $(‘p’).css(‘color’, ‘red’); //magic
    </script>
</body>
</html>


 Copyright © 2010 appendTo, LLC.
                                               THE jOUERY COMPANY
OSCON jQuery Training




                                   Questions?




 Copyright © 2010 appendTo, LLC.
                                                THE jOUERY COMPANY
OSCON jQuery Training




                          jQuery and Selectors




 Copyright © 2010 appendTo, LLC.
                                                 THE jOUERY COMPANY
OSCON jQuery Training



                           jQuery and Selectors
‣ Selectors

‣ Compound Selectors

‣ Selecting by the API

‣ The Context Argument




  Copyright © 2010 appendTo, LLC.
                                                  THE jOUERY COMPANY
OSCON jQuery Training




                                   Selectors
// Select By ID

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

$(‘#foo’);

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




 Copyright © 2010 appendTo, LLC.
                                               THE jOUERY COMPANY
OSCON jQuery Training




                                   Selectors
// Select by class

<div class=”myClass foo bar”></div>
<div class=”baz myClass”></div>
<div class=”bar”></div>

$(‘.myClass’)

<div class=”myClass foo bar”></div>
<div class=”baz myClass”></div>
<div class=”bar”></div>



 Copyright © 2010 appendTo, LLC.
                                               THE jOUERY COMPANY
OSCON jQuery Training




                                   Selectors
// Select by tag
<ul>
<li>Apple</li>
<li>Pear</li>
</ul>

$(“li”);

<ul>
<li>Apple</li>
<li>Pear</li>
</ul>

 Copyright © 2010 appendTo, LLC.
                                               THE jOUERY COMPANY
OSCON jQuery Training




                          Compound Selectors
<p class=”important”></p>
<p></p>
<p class=”warning”></p>
<p class=”important warning”></p>

$(‘p.important,p.warning’);

<p class=”important”></p>
<p></p>
<p class=”warning”></p>
<p class=”important warning”></p>


 Copyright © 2010 appendTo, LLC.
                                               THE jOUERY COMPANY
OSCON jQuery Training



                           Compound Selectors
‣ As of 1.4+ elements are always returned in document order




  Copyright © 2010 appendTo, LLC.
                                                              THE jOUERY COMPANY
OSCON jQuery Training




                        Select By Relationship




 Copyright © 2010 appendTo, LLC.
                                                 THE jOUERY COMPANY
OSCON jQuery Training




                        Select By Relationship
// Children by method
<ul>
<li>Fork</li>
<li>Spoon</li>
</ul>

$(“ul”).children();

<ul>
<li>Fork</li>
<li>Spoon</li>
</ul>

 Copyright © 2010 appendTo, LLC.
                                                 THE jOUERY COMPANY
OSCON jQuery Training




                        Select By Relationship
// Children by selector
<ul>
<li>Fork</li>
<li>Spoon</li>
</ul>

$(“ul > li”);

<ul>
<li>Fork</li>
<li>Spoon</li>
</ul>

 Copyright © 2010 appendTo, LLC.
                                                 THE jOUERY COMPANY
OSCON jQuery Training




                        Select By Relationship
// Siblings by method
<div>
<a href=’#’>link</a>
<p>Lorem Ipsum</p>
</div>

<div>
<a href=’#’>another link</a>
<p>Lorem Ipsum</p>
</div>

$(‘a’).siblings();

 Copyright © 2010 appendTo, LLC.
                                                 THE jOUERY COMPANY
OSCON jQuery Training




                        Select By Relationship
// Siblings by method
<div>
<a href=’#’>link</a>
<p>Lorem Ipsum</p>
</div>

<div>
<a href=’#’>another link</a>
<p>Lorem Ipsum</p>
</div>




 Copyright © 2010 appendTo, LLC.
                                                 THE jOUERY COMPANY
OSCON jQuery Training




                        Select By Relationship
// Parent by method
<div>
<a href=’#’>link</a>
<p>Lorem Ipsum</p>
</div>

<div>
<a href=’#’>another link</a>
<p>Lorem Ipsum</p>
</div>

$(‘a’).parent();

 Copyright © 2010 appendTo, LLC.
                                                 THE jOUERY COMPANY
OSCON jQuery Training




                        Select By Relationship
// Parent result

<div>
<a href=’#’>link</a>
<p>Lorem Ipsum</p>
</div>

<div>
<a href=’#’>another link</a>
<p>Lorem Ipsum</p>
</div>



 Copyright © 2010 appendTo, LLC.
                                                 THE jOUERY COMPANY
OSCON jQuery Training




                        Select By Relationship
// Descendant by method
<ul>
<li>Fork <a href=’#’>Click to use</a></li>
<li>Spoon <a href=’#’>Click to use</a></li>
</ul>

$(“ul”).find(‘a’);                 //selector within find method

<ul>
<li>Fork <a href=’#’>Click to use</a></li>
<li>Spoon <a href=’#’>Click to use</a></li>
</ul>

 Copyright © 2010 appendTo, LLC.
                                                           THE jOUERY COMPANY
OSCON jQuery Training




                        Select By Relationship
// Descendant by selector
<ul>
<li>Fork <a href=’#’>Click to use</a></li>
<li>Spoon <a href=’#’>Click to use</a></li>
</ul>

$(“ul a”);

<ul>
<li>Fork <a href=’#’>Click to use</a></li>
<li>Spoon <a href=’#’>Click to use</a></li>
</ul>

 Copyright © 2010 appendTo, LLC.
                                                 THE jOUERY COMPANY
OSCON jQuery Training




                                   Selector Pitfalls
//Over selection
$(‘div#myId’); vs. $(‘#myId’);

//Under selection
$(‘.randomClass’); vs. $(‘div.randomClass’);




 Copyright © 2010 appendTo, LLC.
                                                       THE jOUERY COMPANY
OSCON jQuery Training




                                   The Context
//Entire Document
$(‘div’)

//Scope your selector
//$(‘selector’, <context>)
$(‘#table’).find(‘selector’)

$(‘a’).click(function() {
    $(‘span’, this)...
});




 Copyright © 2010 appendTo, LLC.
                                                 THE jOUERY COMPANY
OSCON jQuery Training



                                    The Context
‣ Two different scoping methods

‣ $(‘selector’, this)

‣ $(this).find(‘selector’)

‣ Can access context with the context property

  ‣ 1.3 and later




  Copyright © 2010 appendTo, LLC.
                                                  THE jOUERY COMPANY
OSCON jQuery Training




                                   Context Pitfalls
var $mySelection = $(‘selector’, ‘#myid’);
var $mySelection.context = ?

var $mySelection2 = $(‘selector’, $(‘#myid’)[0]);
var $mySelection2.context = ?




 Copyright © 2010 appendTo, LLC.
                                                      THE jOUERY COMPANY
OSCON jQuery Training




                                   Questions?




 Copyright © 2010 appendTo, LLC.
                                                THE jOUERY COMPANY
OSCON jQuery Training




                           jQuery and Methods




 Copyright © 2010 appendTo, LLC.
                                                THE jOUERY COMPANY
OSCON jQuery Training



                           jQuery and Methods
‣ Do Something

‣ Showing and Hiding

‣ Iteration

‣ Styling

‣ Behavior




  Copyright © 2010 appendTo, LLC.
                                                THE jOUERY COMPANY
OSCON jQuery Training




                                   Do Something
$('p').bind('click',function(){
    $(this).effect('drop');
});

// hides element by pulling it left




 Copyright © 2010 appendTo, LLC.
                                                  THE jOUERY COMPANY
OSCON jQuery Training




                                   Do Something
<p>One</p>
<p>Two</p>
<p>Three</p>

// Find Something
$(‘p’)
// Do Something
$(‘p’).hide();

// Generic Syntax
$(‘p’) . <Method Name> ( [PARAMETERS] );


 Copyright © 2010 appendTo, LLC.
                                                  THE jOUERY COMPANY
OSCON jQuery Training




                         Showing and Hiding




 Copyright © 2010 appendTo, LLC.
                                              THE jOUERY COMPANY
OSCON jQuery Training




                           Showing and Hiding
// HTML
<p>One</p>
<p>Two</p>
<p>Three</p>

// Show the elements
$(‘p’).show();

// Hide the elements
$(‘p’).hide();




 Copyright © 2010 appendTo, LLC.
                                                THE jOUERY COMPANY
OSCON jQuery Training




                           Showing and Hiding
// HTML
<p>One</p>
<p>Two</p>
<p>Three</p>

// Show the elements
$(‘p’).show();

// Hide the elements
$(‘p’).hide();




 Copyright © 2010 appendTo, LLC.
                                                THE jOUERY COMPANY
OSCON jQuery Training




                           Showing and Hiding
// HTML
<p>One</p>
<p>Two</p>
<p>Three</p>

// Show the elements
$(‘p’).show();

// Hide the elements
$(‘p’).hide();




 Copyright © 2010 appendTo, LLC.
                                                THE jOUERY COMPANY
OSCON jQuery Training




                                   Iteration




 Copyright © 2010 appendTo, LLC.
                                               THE jOUERY COMPANY
OSCON jQuery Training




                                   Iteration
<p>One</p>
<p>Two</p>
<p>Three</p>

$(‘p’).each(function() {
  // Operates on each p individually
  var rand;
  rand = Math.floor( Math.random() * 1 );
  if(rand > 1) {
    $(this).hide();
  }
});

 Copyright © 2010 appendTo, LLC.
                                               THE jOUERY COMPANY
OSCON jQuery Training




                                   Iteration
<p>One</p>
<p>Two</p>
<p>Three</p>

$(‘p’).each(function() {
  // Operates on each p individually
  var rand;
  rand = Math.floor( Math.random() * 1 );
  if(rand > 1) {
    $(this).hide();
  }
});

 Copyright © 2010 appendTo, LLC.
                                               THE jOUERY COMPANY
OSCON jQuery Training




                                   Iteration
<p>One</p>
<p>Two</p>
<p>Three</p>

$(‘p’).each(function() {
  // Operates on each p individually
  var rand;
  rand = Math.floor( Math.random() * 1 );
  if(rand > 1) {
    $(this).hide();
  }
});

 Copyright © 2010 appendTo, LLC.
                                               THE jOUERY COMPANY
OSCON jQuery Training




                                   Iteration
<p>One</p>
<p>Two</p>
<p>Three</p>

$(‘p’).each(function() {
  // Operates on each p individually
  var rand;
  rand = Math.floor( Math.random() * 1 );
  if(rand > 1) {
    $(this).hide();
  }
});

 Copyright © 2010 appendTo, LLC.
                                               THE jOUERY COMPANY
OSCON jQuery Training



                                    Iteration
‣ The anonymous function




  Copyright © 2010 appendTo, LLC.
                                                THE jOUERY COMPANY
OSCON jQuery Training




                 The Anonymous Function
function foo() { ... }




 Copyright © 2010 appendTo, LLC.
                                          THE jOUERY COMPANY
OSCON jQuery Training




                 The Anonymous Function
function foo() { ... }
var foo = function() { ... }
//do this
$(document).click(foo);

//dont do this
$(document).click(foo());




 Copyright © 2010 appendTo, LLC.
                                          THE jOUERY COMPANY
OSCON jQuery Training




                 The Anonymous Function
function foo() { ... }
var foo = function() { ... }
$(document).click(foo);
$(document).click(function() { ... });




 Copyright © 2010 appendTo, LLC.
                                          THE jOUERY COMPANY
OSCON jQuery Training




                                   Iteration
// HTML
<p>One</p>
<p>Two</p>
<p>Three</p>

// Changes all elements returned
// via Implicit Iteration
$(‘p’).css(‘color’,‘red’);




 Copyright © 2010 appendTo, LLC.
                                               THE jOUERY COMPANY
OSCON jQuery Training




                         “Each”itis AntiPattern
// HTML
<p>One</p>
<p>Two</p>
<p>Three</p>

// Changes all elements returned
// via incredibly inefficient explicit iteration
$(‘p’).each(function(i,v){
  $(this).css(‘color’,‘red’);
});




 Copyright © 2010 appendTo, LLC.
                                                  THE jOUERY COMPANY
OSCON jQuery Training




                                   Styling




 Copyright © 2010 appendTo, LLC.
                                             THE jOUERY COMPANY
OSCON jQuery Training




                                   Styling
// HTML
<p>One</p>
<p class=”foo”>Two</p>
<p>Three</p>

$(‘p’).addClass(‘enabled’);

$(‘p’).removeClass(‘foo’);

$(‘p’).toggleClass(‘foo’);




 Copyright © 2010 appendTo, LLC.
                                             THE jOUERY COMPANY
OSCON jQuery Training




                                   Styling
//     HTML
<p     class=”enabled”>One</p>
<p     class=”enabled foo”>Two</p>
<p     class=”enabled”>Three</p>

$(‘p’).addClass(‘enabled’);

$(‘p’).removeClass(‘foo’);

$(‘p’).toggleClass(‘foo’);




 Copyright © 2010 appendTo, LLC.
                                             THE jOUERY COMPANY
OSCON jQuery Training




                                   Styling
//     HTML
<p     class=”enabled”>One</p>
<p     class=”enabled”>Two</p>
<p     class=”enabled”>Three</p>

$(‘p’).addClass(‘enabled’);

$(‘p’).removeClass(‘foo’);

$(‘p’).toggleClass(‘foo’);




 Copyright © 2010 appendTo, LLC.
                                             THE jOUERY COMPANY
OSCON jQuery Training




                                   Styling
//     HTML
<p     class=”enabled foo”>One</p>
<p     class=”enabled foo”>Two</p>
<p     class=”enabled foo”>Three</p>

$(‘p’).addClass(‘enabled’);

$(‘p’).removeClass(‘foo’);

$(‘p’).toggleClass(‘foo’);




 Copyright © 2010 appendTo, LLC.
                                             THE jOUERY COMPANY
OSCON jQuery Training




                                   Styling
<p>One</p>
<p>Two</p>
<p>Three</p>

$(‘p’).css(‘color’,‘red’);

$(‘p’).css(‘font-weight’,‘bold’);

$(‘p’).css({
  color: ‘red’,
  fontWeight: ‘bold’
});

 Copyright © 2010 appendTo, LLC.
                                             THE jOUERY COMPANY
OSCON jQuery Training




                                   Styling
<p style=”color: red;”>One</p>
<p style=”color: red;”>Two</p>
<p style=”color: red;”>Three</p>

$(‘p’).css(‘color’,‘red’);

$(‘p’).css(‘font-weight’,‘bold’);
$(‘p’).css({
  ‘background-color’: ‘blue’,
  fontWeight: ‘bold’,
  border: ‘1px solid black’
});

 Copyright © 2010 appendTo, LLC.
                                             THE jOUERY COMPANY
OSCON jQuery Training




                                   Behavior




 Copyright © 2010 appendTo, LLC.
                                              THE jOUERY COMPANY
OSCON jQuery Training




                                   Behavior
// HTML
<p>One</p>
<p>Two</p>
<p>Three</p>

$(‘p’).click(function(event) {
  $(this).css(‘color’, ‘red’);
});




 Copyright © 2010 appendTo, LLC.
                                              THE jOUERY COMPANY
OSCON jQuery Training




                                   Behavior
// HTML
<p>One</p>
<p>Two</p>
<p>Three</p>

$(‘p’).hover(function(event) {
  $(this).css(‘color’, ‘red’);
}, function(event) {
  $(this).css(‘color’, ‘’);
});




 Copyright © 2010 appendTo, LLC.
                                              THE jOUERY COMPANY
OSCON jQuery Training




                                   Behavior
// HTML
<p>One</p>
<p>Two</p>
<p>Three</p>

// Add event
$(‘p’).click(function(event) {
  $(this).css(‘color’, ‘red’);
});

// Remove event
$(‘p’).unbind(‘click’);

 Copyright © 2010 appendTo, LLC.
                                              THE jOUERY COMPANY
OSCON jQuery Training




                                   Questions?




 Copyright © 2010 appendTo, LLC.
                                                THE jOUERY COMPANY
OSCON jQuery Training




                      Chaining and Sentences




 Copyright © 2010 appendTo, LLC.
                                               THE jOUERY COMPANY
OSCON jQuery Training



                     Chaining and Sentences
‣ Method Chaining

‣ The Stack Architecture

‣ Finding vs. Filtering Elements




  Copyright © 2010 appendTo, LLC.
                                              THE jOUERY COMPANY
OSCON jQuery Training




                              Method Chaining




 Copyright © 2010 appendTo, LLC.
                                                THE jOUERY COMPANY
OSCON jQuery Training




                                   Method Chaining
$(‘#myForm a’)
  .addClass(‘.highlight’)
  .click(function(){...})
  .hover(function(){...},function(){...});




 Copyright © 2010 appendTo, LLC.
                                                     THE jOUERY COMPANY
OSCON jQuery Training




                                   Method Chaining
$(‘#myForm a’)
  .addClass(‘.highlight’)
  .click(function(){...})
  .hover(function(){...},function(){...});




 Copyright © 2010 appendTo, LLC.
                                                     THE jOUERY COMPANY
OSCON jQuery Training




                                   Method Chaining
$(‘#myForm a’)
  .addClass(‘.highlight’)
  .click(function(){...})
  .hover(function(){...},function(){...});




 Copyright © 2010 appendTo, LLC.
                                                     THE jOUERY COMPANY
OSCON jQuery Training




                                   Method Chaining
$(‘#myForm a’)
  .addClass(‘.highlight’)
  .click(function(){...})
  .hover(function(){...},function(){...});




 Copyright © 2010 appendTo, LLC.
                                                     THE jOUERY COMPANY
OSCON jQuery Training




                     What Breaks the Chain?
//Getters vs. Setters
$(...) //jQuery selector
  .html(‘Hello world’)
  .addClass(‘hello’)

$(...)
  .html()
  .addClass(‘hello’)




 Copyright © 2010 appendTo, LLC.
                                              THE jOUERY COMPANY
OSCON jQuery Training




                     What Breaks the Chain?
//Getters vs. Setters
$(...)
  .html(‘Hello world’) //non breaking
  .addClass(‘hello’)

$(...)
  .html()
  .addClass(‘hello’)




 Copyright © 2010 appendTo, LLC.
                                              THE jOUERY COMPANY
OSCON jQuery Training




                     What Breaks the Chain?
//Getters vs. Setters
$(...)
  .html(‘Hello world’)
  .addClass(‘hello’) //class will be added

$(...)
  .html()
  .addClass(‘hello’)




 Copyright © 2010 appendTo, LLC.
                                              THE jOUERY COMPANY
OSCON jQuery Training




                     What Breaks the Chain?
//Getters vs. Setters
$(...)
  .html(‘Hello world’)
  .addClass(‘hello’)

$(...) //jQuery selector
  .html()
  .addClass(‘hello’)




 Copyright © 2010 appendTo, LLC.
                                              THE jOUERY COMPANY
OSCON jQuery Training




                     What Breaks the Chain?
//Getters vs. Setters
$(...)
  .html(‘Hello world’)
  .addClass(‘hello’)

$(...)
  .html() //breaking
  .addClass(‘hello’)




 Copyright © 2010 appendTo, LLC.
                                              THE jOUERY COMPANY
OSCON jQuery Training




                     What Breaks the Chain?
//Getters vs. Setters
$(...)
  .html(‘Hello world’)
  .addClass(‘hello’)

$(...)
  .html()
  .addClass(‘hello’) //runtime error




 Copyright © 2010 appendTo, LLC.
                                              THE jOUERY COMPANY
OSCON jQuery Training




                     What Breaks the Chain?
//put getter last
var myHtml = $(...)
  .addClass(‘hello’)
  .html();

//store selection in variable
//when multiple getters
//are needed
var $mySelection = $(...);

var myHtml = $mySelection.html();


 Copyright © 2010 appendTo, LLC.
                                              THE jOUERY COMPANY
OSCON jQuery Training




                   The Stack Architecture




 Copyright © 2010 appendTo, LLC.
                                            THE jOUERY COMPANY
OSCON jQuery Training




                     jQuery Collections              (Buckets)


$(‘body’)                          [body]

       .find(‘p’)                    [p, p, p] => [body]

              .find(‘a’)             [a, a] => [p, p, p] => [body]

                     .addClass(‘foo’)

              .end()                 [p, p, p] => [body]

         .end()                      [body]


 Copyright © 2010 appendTo, LLC.
                                                                 THE jOUERY COMPANY
OSCON jQuery Training




                                   Method Chaining
$(‘tr’)
   .filter(‘:odd’)
      .addClass(‘odd’)
   .end()
   .find(‘td.company’)
      .addClass(‘companyName’);




 Copyright © 2010 appendTo, LLC.
                                                     THE jOUERY COMPANY
OSCON jQuery Training




                            Finding vs. Filtering




 Copyright © 2010 appendTo, LLC.
                                                    THE jOUERY COMPANY
OSCON jQuery Training




                                   Finding Elements
$(‘body’)                             [body]

       .find(‘p’)                       [p, p, p] => [body]

              .find(‘a’)                [a, a] => [p, p, p] => [body]

                     .addClass(‘foo’)

              .end()                    [p, p, p] => [body]

         .end()                         [body]


 Copyright © 2010 appendTo, LLC.
                                                                THE jOUERY COMPANY
OSCON jQuery Training




                              Filtering Elements
$(‘a’)                             [a, a.foo, a]

       .filter(‘.foo’)             [a.foo] => [a, a.foo, a]

              .attr(‘href’, ‘http://appendto.com’)

       .end()                      [a, a.foo, a]




 Copyright © 2010 appendTo, LLC.
                                                          THE jOUERY COMPANY
OSCON jQuery Training



                                    Find vs. Filter
‣ find() searches the DOM for descendants of elements in the current jQuery
 wrapped collection

‣ filter() searches the current jQuery collection and returns a reduced set (sub set)




  Copyright © 2010 appendTo, LLC.
                                                                        THE jOUERY COMPANY
OSCON jQuery Training




                                   Questions?




 Copyright © 2010 appendTo, LLC.
                                                THE jOUERY COMPANY
OSCON jQuery Training




         jQuery and DOM Manipulation




 Copyright © 2010 appendTo, LLC.
                                   THE jOUERY COMPANY
OSCON jQuery Training



          jQuery and DOM Manipulation
‣ Creating Elements

‣ Inserting Elements

‣ Removing Elements

‣ Cloning Elements

‣ Wrapping Elements

‣ Attributes

‣ Data


  Copyright © 2010 appendTo, LLC.
                                    THE jOUERY COMPANY
OSCON jQuery Training




                            Creating Elements




 Copyright © 2010 appendTo, LLC.
                                                THE jOUERY COMPANY
OSCON jQuery Training




                              Creating Elements
$(‘<div></div>’);

// Creates ...
<div></div>

var ul = $(‘<ul><li>Hello</li></ul>’);

// Creates ...
<ul>
  <li>Hello</li>
</ul>


 Copyright © 2010 appendTo, LLC.
                                                  THE jOUERY COMPANY
OSCON jQuery Training




                              Creating Elements
// New in 1.4
$("<div/>", {
  class: "test",
  text: "Click me!",
  click: function(){
    $(this).toggleClass("test");
  }
});

// Clicking toggles the class
<div class=”test”>Click me!</div>


 Copyright © 2010 appendTo, LLC.
                                                  THE jOUERY COMPANY
OSCON jQuery Training




                            Inserting Elements




 Copyright © 2010 appendTo, LLC.
                                                 THE jOUERY COMPANY
OSCON jQuery Training




                             Inserting Elements
// Before
<p>Apple</p>
<p>Orange</p>

$(‘p’).after(‘<img src=”logo.png” />’);

// After
<p>Apple</p>
<img src=”logo.png />
<p>Orange</p>
<img src=”logo.png />


 Copyright © 2010 appendTo, LLC.
                                                  THE jOUERY COMPANY
OSCON jQuery Training




                             Inserting Elements
// Before
<p>Apple</p>
<p>Orange</p>

$(‘p’).before(‘<img src=”logo.png” />’);

// After
<img src=”logo.png” />
<p>Apple</p>
<img src=”logo.png” />
<p>Orange</p>


 Copyright © 2010 appendTo, LLC.
                                                  THE jOUERY COMPANY
OSCON jQuery Training




                             Inserting Elements
// Before
<p id=”apple”>Apple</p>
<p id=”orange”>Orange</p>

$(‘#apple’).prepend(‘<img src=”apple.png” />’);
$(‘#orange’).append(‘<img src=”orange.png” />’);

// After
<p id=”apple”><img src=”apple.png” />Apple</p>
<p id=”orange”>Orange<img src=”orange.png” /></p>




 Copyright © 2010 appendTo, LLC.
                                                  THE jOUERY COMPANY
OSCON jQuery Training




// Before
<p id=”apple”>Apple</p>
<p id=”orange”>Orange</p>

$(‘<img src=”apple.png” />’).prependTo(‘#apple’);
$(‘<img src=”orange.png” />’).appendTo(‘#orange’);

// After
<p id=”apple”><img src=”apple.png” />Apple</p>
<p id=”orange”>Orange<img src=”orange.png” /></p>




 Copyright © 2010 appendTo, LLC.
                                            THE jOUERY COMPANY
OSCON jQuery Training




        Element Creation Best Practice
//Use object literal syntax for single (non-nested)
element creation

//If creating nested elements use a single string
//yes
$(‘<div><a href=”url”>link text</a></div>’)
  .appendTo(‘body’);

//slower
$(‘<a href=”url”>link text</a>’)
  .appendTo(‘<div>’)
  .appendTo(‘body’);

 Copyright © 2010 appendTo, LLC.
                                            THE jOUERY COMPANY
OSCON jQuery Training




                         Removing Elements




 Copyright © 2010 appendTo, LLC.
                                             THE jOUERY COMPANY
OSCON jQuery Training




                            Removing Elements
// Before
<div>
  <p>Red</p>
  <p>Green</p>
</div>

// Removing Elements Directly
$(‘p’).remove();

// After
<div>
</div>

 Copyright © 2010 appendTo, LLC.
                                                THE jOUERY COMPANY
OSCON jQuery Training




                                   Empty Elements
// Before
<div>
  <p><em>Red</em></p>
  <p><em>Green</em></p>
</div>

$(‘p’).empty();
// After
<div>
  <p></p>
  <p></p>
</div>

 Copyright © 2010 appendTo, LLC.
                                                    THE jOUERY COMPANY
OSCON jQuery Training




                           Detaching Elements
// Before
<div id=”container”>
  <p>Foo Bar</p>
</div>

var $bucket = $(‘p’).detach();
$bucket.insertAfter(‘#container’);

// After
<div id=”container>
</div>
<p>Foo Bar</p>

 Copyright © 2010 appendTo, LLC.
                                                THE jOUERY COMPANY
OSCON jQuery Training




                             Cloning Elements




 Copyright © 2010 appendTo, LLC.
                                                THE jOUERY COMPANY
OSCON jQuery Training




                               Cloning Elements
// Before
<div id=”source”> <strong>The Source</strong> </div>

// Copies the element instead of moving it
$(‘#source’).clone().appendTo(‘body’);

// After
<div id=”source”> <strong>The Source</strong> </div>
<div id=”source”> <strong>The Source</strong> </div>




 Copyright © 2010 appendTo, LLC.
                                                  THE jOUERY COMPANY
OSCON jQuery Training




                               Cloning Elements
// Before
<div id=”source”> <strong>The Source</strong> </div>

// Copies the element instead of moving it
$(‘#source’).clone(true).appendTo(‘body’);

// After
<div id=”source”> <strong>The Source</strong> </div>
<div id=”source”> <strong>The Source</strong> </div>




 Copyright © 2010 appendTo, LLC.
                                                  THE jOUERY COMPANY
OSCON jQuery Training




                          Modifying Elements




 Copyright © 2010 appendTo, LLC.
                                               THE jOUERY COMPANY
OSCON jQuery Training




                            Wrapping Elements
// Before
<p>Hello world</p>
<p>Foo bar</p>

$(‘p’).wrap(‘<div></div>’);


// After
<div><p>Hello world</p></div>
<div><p>Foo bar</p></div>




 Copyright © 2010 appendTo, LLC.
                                                THE jOUERY COMPANY
OSCON jQuery Training




                            Wrapping Elements
// Before
<p>Hello world</p>
<p>Foo bar</p>

// As a group
$(‘p’).wrapAll(‘<div></div>’);

// After
<div><p>Hello world</p>
<p>Foo bar</p></div>




 Copyright © 2010 appendTo, LLC.
                                                THE jOUERY COMPANY
OSCON jQuery Training




                            Wrapping Elements
// Before
<p>Hello world</p>
<p>Foo bar</p>

// Wrapping Children
$(‘p’).wrapInner(‘<a href=”#”></a>’);

// After
<p><a href=”#”>Hello world</a></p>
<p><a href=”#”>Foo bar</a></p>




 Copyright © 2010 appendTo, LLC.
                                                THE jOUERY COMPANY
OSCON jQuery Training




            Unwrapping Elements    (new in 1.4+)


// Before
<div><p>Hello world</p></div>
<div><p>Foo bar</p></div>

//Individually
$(‘p’).unwrap();

// After
<p>Hello world</p>
<p>Foo bar</p>




 Copyright © 2010 appendTo, LLC.
                                             THE jOUERY COMPANY
OSCON jQuery Training




                                   Attributes




 Copyright © 2010 appendTo, LLC.
                                                THE jOUERY COMPANY
OSCON jQuery Training




                                   .attr()
// Before
<img id=”logo” />

$(‘#logo’).attr(‘src’, ‘logo.png’);

// After
<img id=”logo” src=”logo.png” />




 Copyright © 2010 appendTo, LLC.
                                             THE jOUERY COMPANY
OSCON jQuery Training




                                   .attr()
// Markup
<img id=”logo” title=”Hello world” />

var title = $(‘#logo’).attr(‘title’);
//title === “Hello world”




 Copyright © 2010 appendTo, LLC.
                                             THE jOUERY COMPANY
OSCON jQuery Training




                                   .attr()
// Before
<img id=”logo” />

$(‘#logo’).attr({
    src: ‘logo.png’,
    alt: ‘Company logo’
});

// After
<img id=”logo” src=”logo.png” alt=”Company logo” />




 Copyright © 2010 appendTo, LLC.
                                             THE jOUERY COMPANY
OSCON jQuery Training




                                   .attr()
// Before
<img id=”logo” src=”logo.png” alt=”Company logo” />

$(‘#logo’).attr(‘class’, function() {
    var c = [‘a’, ‘b’, ‘c’];
    var r = Math.floor( Math.random() * 3 );
    return c[r];
});

// After (randomized class name)
<img id=”logo” src=”logo.png” alt=”Company logo”
class=”a” />


 Copyright © 2010 appendTo, LLC.
                                               THE jOUERY COMPANY
OSCON jQuery Training




                               Element Contents
<div id=”header”>
  <em>HEADER</em>
</div>

// Returns ‘<em>HEADER</em>
var theHtml = $(‘#header’).html();

$(‘#header’).html(‘<ul><li>One</li></ul>’);

<div id=”header”>
  <ul><li>One</li></ul>
</div>

 Copyright © 2010 appendTo, LLC.
                                                  THE jOUERY COMPANY
OSCON jQuery Training




                               Element Contents
<div id=”header”>
  <em>HEADER</em>
</div>

// Returns ‘HEADER’
$(‘#header’).text();

$(‘#header’).text(‘<em>Hello world</em>’);

<div id=”header”>
  &lt;em&gt;Hello world&lt;/em&gt;
</div>

 Copyright © 2010 appendTo, LLC.
                                                  THE jOUERY COMPANY
OSCON jQuery Training




                                   .val()
<input id=”email” type=‘text’ value=‘foo bar’ />

// Returns ‘foo bar’
$(‘#email’).val();

// Sets value to ‘The value’
$(‘#email’).val(‘The value’);

<input id=”email” type=‘text’ value=‘The value’ />

$(‘select’).val([ ‘red’, ‘green’ ]);


 Copyright © 2010 appendTo, LLC.
                                            THE jOUERY COMPANY
OSCON jQuery Training




                                   Data




 Copyright © 2010 appendTo, LLC.
                                          THE jOUERY COMPANY
OSCON jQuery Training




                                   Data
// HTML
<div id=”myDiv”>
  <p>One</p>
</div>

// Potential for a Memory Leak
var elem = $(‘#myDiv’)[0];

elem.foo = new String(‘xyz’);




 Copyright © 2010 appendTo, LLC.
                                          THE jOUERY COMPANY
OSCON jQuery Training




                                   Data
// HTML
<div id=”myDiv”>
  <p>One</p>
</div>

// Cross Browser Safe Method to attach data
$(‘#myDiv’).data(‘foo’, new String(‘xyz’));

var myVar = $(‘#myDiv’).data(‘foo’);

$(‘#myDiv’).removeData(‘foo’);


 Copyright © 2010 appendTo, LLC.
                                              THE jOUERY COMPANY
OSCON jQuery Training




                                   Data   (new in 1.4+)


var object1 = { abc: 123 };
var object2 = { xyz: 789 };

$(‘#myDiv’).data(‘object1’, object1);
$(‘#myDiv’).data(‘object2’, object2);

var objects = $(‘#myDiv’).data();
objects.object1;
objects.object2;




 Copyright © 2010 appendTo, LLC.
                                                          THE jOUERY COMPANY
OSCON jQuery Training




                                   Questions?




 Copyright © 2010 appendTo, LLC.
                                                THE jOUERY COMPANY
OSCON jQuery Training




                           jQuery and Events




 Copyright © 2010 appendTo, LLC.
                                               THE jOUERY COMPANY
OSCON jQuery Training



                               jQuery and Events
‣ Binding Events

‣ Binding Multiple Events

‣ The Event Object

‣ Event Namespacing

‣ Event Propagation




  Copyright © 2010 appendTo, LLC.
                                                   THE jOUERY COMPANY
OSCON jQuery Training




                                   Binding Events




 Copyright © 2010 appendTo, LLC.
                                                    THE jOUERY COMPANY
OSCON jQuery Training




                      jQuery Event Shortcuts
// Binding an event
$('a.tab').click(function(){
  // event handling code
  $(this).css(‘color’, ‘red’);
});

// Binding an event
$('a.tab').mouseover(function(){
  // event handling code
  $(this).css(‘color’, ‘red’);
});


 Copyright © 2010 appendTo, LLC.
                                               THE jOUERY COMPANY
OSCON jQuery Training



                  Common Types of Events
‣ click, dblclick, mouseover, mouseout

‣ mouseenter, mouseleave

‣ change, focus, blur

‣ keydown, keyup, keypress

‣ scroll, resize




  Copyright © 2010 appendTo, LLC.
                                           THE jOUERY COMPANY
OSCON jQuery Training




                                   Hover Shortcut
// mouseenter, mouseleave

$(‘li’).hover(
   function() {
       $(this).addClass(‘hover’);
   },
   function() {
       $(this).removeClass(‘hover’);
   });




 Copyright © 2010 appendTo, LLC.
                                                    THE jOUERY COMPANY
OSCON jQuery Training




                                   Hover Shortcut
// mouseenter, mouseleave

$(‘li’)
    .bind(‘mouseenter’, function() {
        $(this).addClass(‘hover’);
    })
    .bind(‘mouseleave’, function() {
        $(this).removeClass(‘hover’);
    });




 Copyright © 2010 appendTo, LLC.
                                                    THE jOUERY COMPANY
OSCON jQuery Training




                                   Hover Shortcut
// Optimal hover

$(‘li’)
    .hover(function(evt) {
        var add = evt.type == ‘mouseenter’;
        $(this).toggleClass(‘hover’, add);
    });




 Copyright © 2010 appendTo, LLC.
                                                    THE jOUERY COMPANY
OSCON jQuery Training




                                   Hover Shortcut
// Optimal hover

$(‘li’)
    .hover(function(evt) {
        $(this).toggleClass(‘hover’, evt.type ==
‘mouseenter’);
    });

$(‘li’)
   .bind(‘mouseenter mouseleave’,fn);




 Copyright © 2010 appendTo, LLC.
                                                    THE jOUERY COMPANY
OSCON jQuery Training




               Binding Events with .bind()
// Binding an event

$('a.tab').bind('click',function(e){
  // event handling code
  $(this).css(‘color’, ‘red’);
});

// Unbinding an event

$('a.tab').unbind('click');




 Copyright © 2010 appendTo, LLC.
                                         THE jOUERY COMPANY
OSCON jQuery Training




                                   Binding Events
// Bind an event to execute once

$('a.tab').one('click',function(e){
  // event handling code
  $(this).css(‘color’,‘red’);
});




 Copyright © 2010 appendTo, LLC.
                                                    THE jOUERY COMPANY
OSCON jQuery Training




                   Binding Multiple Events




 Copyright © 2010 appendTo, LLC.
                                             THE jOUERY COMPANY
OSCON jQuery Training




                     Binding Multiple Events
$(‘div’).bind(‘mouseover mouseout’,
  function(e) {
    if ( e.type == ‘mouseover’ ) {
      $(this).addClass('highlight');
    }
    elseif ( e.type == ‘mouseout’ ) {
      $(this).removeClass('highlight');
    }
  });

$(‘div’).unbind(‘mouseover mouseout’);
$(‘div’).unbind();

 Copyright © 2010 appendTo, LLC.
                                               THE jOUERY COMPANY
OSCON jQuery Training




                     Binding Multiple Events
$('a.tab').hover(
   function(e){
      $(this).addClass('highlight');
   },
   function(e){
      $(this).removeClass('highlight');
   }
);

// Unbind the hover event
$(‘a.tab’).unbind('mouseenter mouseleave')


 Copyright © 2010 appendTo, LLC.
                                               THE jOUERY COMPANY
OSCON jQuery Training




                     Binding Multiple Events
// Arbitrary number of functions to execute
cyclically on click

$('a.tab').toggle(
  function(){
     $(this).css('color','red');
  },
  function(){
     $(this).css('color','yellow');
  },
  function(){
     $(this).css('color','green');
  });
 Copyright © 2010 appendTo, LLC.
                                               THE jOUERY COMPANY
OSCON jQuery Training




                             The Event Object




 Copyright © 2010 appendTo, LLC.
                                                THE jOUERY COMPANY
OSCON jQuery Training



                                    The Event Object
‣ Event Object Properties


                               type            pageX
                               timeStamp       pageY

                               target          data
                               relatedTarget   result
                               currentTarget   which



  Copyright © 2010 appendTo, LLC.
                                                        THE jOUERY COMPANY
OSCON jQuery Training



                                    The Event Object
‣ event.type
 The name of the event (all lowercase)

‣ event.target
 The element that the event originated at

‣ event.pageX, event.pageY
 Coordinates in pixels of mouse position on page (not populated for key events)




  Copyright © 2010 appendTo, LLC.
                                                                    THE jOUERY COMPANY
OSCON jQuery Training




                         Event Namespacing




 Copyright © 2010 appendTo, LLC.
                                             THE jOUERY COMPANY
OSCON jQuery Training



                             Event Namespacing
‣ Tagging for event handlers

‣ Added in jQuery 1.2
 namespace post - http://bit.ly/aCaFXS

‣ Simplifies unbinding of events




  Copyright © 2010 appendTo, LLC.
                                                 THE jOUERY COMPANY
OSCON jQuery Training




            Binding Namespaced Events
$(‘div’)
  .bind(‘click’, fn)
  .bind(‘click.foo’, fn)
  .bind(‘mouseover.foo’, fn);

// Unbind click.foo event
$(‘div’).unbind(‘click.foo’);

// Unbind all .foo namespaced events
// click.foo, mouseover.foo
$(‘div’).unbind(‘.foo’);


 Copyright © 2010 appendTo, LLC.
                                       THE jOUERY COMPANY
OSCON jQuery Training




                            Event Propagation




 Copyright © 2010 appendTo, LLC.
                                                THE jOUERY COMPANY
OSCON jQuery Training




     Event Propagation - Anchor Tag
<div><p>
    <a href=”#”>Link</a>
</p></div>

$(‘div’).click(function() {
    alert(‘clicked div!’);
});

$(‘a’).click(function() {
    alert(‘clicked!’);
});



 Copyright © 2010 appendTo, LLC.
                                   THE jOUERY COMPANY
OSCON jQuery Training




Event Propagation - Paragraph Tag
<div><p>
    <a href=”#”>Link</a>
</p></div>

$(‘div’).click(function() {
    alert(‘clicked div!’);
});

$(‘a’).click(function() {
    alert(‘clicked!’);
});



 Copyright © 2010 appendTo, LLC.
                                   THE jOUERY COMPANY
OSCON jQuery Training




Event Propagation - Paragraph Tag
<div><p>
    <a href=”#”>Link</a>
</p></div>

$(‘div’).click(function(evt) {
    // evt.target == a
    alert(‘clicked div!’);
});

$(‘a’).click(function() {
    alert(‘clicked!’);
});

 Copyright © 2010 appendTo, LLC.
                                   THE jOUERY COMPANY
OSCON jQuery Training




            Event Propagation - Div Tag
<div id=”navigation”><p>
    <a href=”#”>Link</a>
</p></div>

$(‘#navigation’).click(function(evt) {
    // evt.target == anchor tag
    alert(‘clicked div!’);
    // this = Reference to div DOM element
    $(this).addClass(‘active’);
});

$(‘a’).click(function() {          alert(‘clicked!’);     });

 Copyright © 2010 appendTo, LLC.
                                                    THE jOUERY COMPANY
OSCON jQuery Training




Event Propagation - Stopping Prop.
<div><p>
    <a href=”#”>Link</a>
</p></div>

$(‘div’).click(function() {
    alert(‘clicked div!’);
});

$(‘a’).click(function() {
    alert(‘clicked!’);
    return false;
});

 Copyright © 2010 appendTo, LLC.
                                   THE jOUERY COMPANY
OSCON jQuery Training




Event Propagation - Stopping Prop.
<div><p>
    <a href=”#”>Link</a>
</p></div>

$(‘div’).click(function() { alert(‘clicked
div!’); });

$(‘a’).click(function(evt) {
    alert(‘clicked!’);
    evt.stopPropagation();
    evt.preventDefault();
    return false; // Same as two lines above
});
 Copyright © 2010 appendTo, LLC.
                                               THE jOUERY COMPANY
OSCON jQuery Training




Event Propagation - Returning False
Stop events from bubbling
Prevent the default event action from occurring




 Copyright © 2010 appendTo, LLC.
                                            THE jOUERY COMPANY
OSCON jQuery Training




                                   Live Events




 Copyright © 2010 appendTo, LLC.
                                                 THE jOUERY COMPANY
OSCON jQuery Training



                         Live Events - Binding
// Before
<p>One</p>

// Code
$(‘p’).live(‘click’,function() {
  alert(‘P Pressed’)
});
$(‘<p />’).text(‘Two’).appendTo(‘body’);

// After
<p>One</p>
<p>Two</p>

 Copyright © 2010 appendTo, LLC.
                                                 THE jOUERY COMPANY
OSCON jQuery Training




                    Live Events - Unbinding
// Remove with .die()
$(‘p’).die();

// .die() also accepts an event type
$(‘p’).die(‘click’);

// Namespace Example
$(‘p’).die(‘click.one’);




 Copyright © 2010 appendTo, LLC.
                                              THE jOUERY COMPANY
OSCON jQuery Training




              Live Events - Namespacing
// .live() performs just like .bind()
$(‘p’).live(‘click dblclick’, function(e){
  if(e.type == ‘click’) {
    ...
  }
});

// .live() can take namespaced events
$(‘p’).live(‘click.one’,function(e) {
  alert(‘Click.one’);
});


 Copyright © 2010 appendTo, LLC.
                                             THE jOUERY COMPANY
OSCON jQuery Training




                               Live and delegate
//1.4+ - live events can be given a context
$("table").each(function(){
        $("td", this).live("hover", function(){
                $(this).toggleClass("hover");
        });
});

//delegate is short hand method for this best
//practice pattern
$("table").delegate("td", "hover", function(){
  $(this).toggleClass("hover");
});

 Copyright © 2010 appendTo, LLC.
                                                   THE jOUERY COMPANY
OSCON jQuery Training




                               Triggering Events
// HTML
<p>One</p>

// Assign the event
$(‘p’).live(‘click’,function() {
  alert(‘P Pressed’)
});

// Trigger the event manually
$(‘p’).trigger(‘click’);




 Copyright © 2010 appendTo, LLC.
                                                   THE jOUERY COMPANY
OSCON jQuery Training




                               Triggering Events
// HTML
<p>One</p>

// Assign the event
$(‘p’).live(‘click’,function() {
  alert(‘P Pressed’)
});

// Some Event types have shortcuts
$(‘p’).click();




 Copyright © 2010 appendTo, LLC.
                                                   THE jOUERY COMPANY
OSCON jQuery Training




                             Event Parameters




 Copyright © 2010 appendTo, LLC.
                                                THE jOUERY COMPANY
OSCON jQuery Training




                 Event Data - Event Object
// HTML
<p>One</p>

// Define the custom event
var foo = ‘bar’;
$(‘p’).bind(‘click’, {msg: foo},
   function(evt){
     alert(‘Parameter: ’+ evt.data.msg)
   }
);




 Copyright © 2010 appendTo, LLC.
                                             THE jOUERY COMPANY
OSCON jQuery Training




                                   Questions?




 Copyright © 2010 appendTo, LLC.
                                                THE jOUERY COMPANY
OSCON jQuery Training




                                   jQuery and Ajax
                                       Lesson 7




 Copyright © 2010 appendTo, LLC.
                                                     THE jOUERY COMPANY
OSCON jQuery Training



                                    jQuery and Ajax
‣ Request Types

‣ Data Formats

‣ Request Callbacks

‣ Making a Request




  Copyright © 2010 appendTo, LLC.
                                                      THE jOUERY COMPANY
OSCON jQuery Training




                                   Request Types




 Copyright © 2010 appendTo, LLC.
                                                   THE jOUERY COMPANY
OSCON jQuery Training



                                    Request Types
Core Method                                Shortcuts
‣ $.ajax();                                ‣ $.get();

                                           ‣ $.post();

                                           ‣ $.getJSON();

                                           ‣ $.getScript();

                                           ‣ $( ... ).load();




  Copyright © 2010 appendTo, LLC.
                                                                THE jOUERY COMPANY
OSCON jQuery Training




                                   Data Formats




 Copyright © 2010 appendTo, LLC.
                                                  THE jOUERY COMPANY
OSCON jQuery Training



                                    Data Formats
‣ xml    Returned as DOM

‣ html     Returned as String

‣ json    Returned as Object

‣ jsonp    Returned as Object

‣ text   Returned as String

‣ script    Evaluated & Returned as String




  Copyright © 2010 appendTo, LLC.
                                                   THE jOUERY COMPANY
OSCON jQuery Training




                            Request Callbacks




 Copyright © 2010 appendTo, LLC.
                                                THE jOUERY COMPANY
OSCON jQuery Training



                               Request Callbacks
‣ success: function(data, status, XMLHttpRequest) { ... }

‣ error: function(XMLHttpRequest, textStatus, error) { ... }

‣ complete: function(XMLHttpRequest, status) { ... }




  Copyright © 2010 appendTo, LLC.
                                                               THE jOUERY COMPANY
OSCON jQuery Training




                             Making a Request




 Copyright © 2010 appendTo, LLC.
                                                THE jOUERY COMPANY
OSCON jQuery Training




                               Making a Request
$.get(‘page.php’, function(data) {
    $(data).appendTo(‘body’);
}, ‘html’);

var data = { fname: ‘Andrew’, lname: ‘Wirick’ };
$.post(‘page.php’, data, function(data) {
    $(data).appendTo(‘body’);
}, ‘html’);




 Copyright © 2010 appendTo, LLC.
                                                  THE jOUERY COMPANY
OSCON jQuery Training




                     Making a Request JSON
// Response
{“names”: [“Jonathan”, “Mike”, “Andrew”],
 “states”: {“NE” : “Nebraska”},
 “year” : “2010” }


$.getJSON(‘page.php’, function(json) {
    $(‘body’).append( json.names[0] );
    $(‘body’).append( json.states.NE );
});




 Copyright © 2010 appendTo, LLC.
                                             THE jOUERY COMPANY
OSCON jQuery Training




                     Making a Request JSON
// Response
{ “names”: [“Jonathan”, “Mike”, “Andrew”] }


$.getJSON(‘page.php’, function(json) {
    $.each(json.names, function(i, val) {
        $(‘body’).append( val );
    });
});




 Copyright © 2010 appendTo, LLC.
                                              THE jOUERY COMPANY
OSCON jQuery Training




                      Making a Request XML
// Response
<movies><movie id=”123”><title>Back to the future</
title></movie></movies>

$.get(‘movies.php’, function(xml) {
   var title = $(xml)
     .find(‘movie[id=123] > title’)
        .text();
   $(‘body’).append( title );
}, ‘xml’);




 Copyright © 2010 appendTo, LLC.
                                             THE jOUERY COMPANY
OSCON jQuery Training




                      Making a Request XML
// Response
<document><![CDATA[
   <h1>Some data</h1>
]]></document>

$.get(‘movies.php’, function(root) {
   var title = $(root)
        .find(‘document’)
           .text();
   $(‘body’).append( title );
}, ‘xml’);


 Copyright © 2010 appendTo, LLC.
                                             THE jOUERY COMPANY
OSCON jQuery Training




                    Cross Domain Requests
var url = ‘http://flickr.com...’;

$.getJSON(url, function(json) {

       // Iterate the items and generate HTML

});




 Copyright © 2010 appendTo, LLC.
                                                THE jOUERY COMPANY
OSCON jQuery Training




                                   Questions?




 Copyright © 2010 appendTo, LLC.
                                                THE jOUERY COMPANY
OSCON jQuery Training




                         Thank you for coming!

                                   http://appendTo.com
                                        @appendTo


 Copyright © 2010 appendTo, LLC.
                                                         THE jOUERY COMPANY

More Related Content

Similar to Cooking with jQuery

What's coming in Java EE 8
What's coming in Java EE 8What's coming in Java EE 8
What's coming in Java EE 8David Delabassee
 
JavaScript Coding with Class
JavaScript Coding with ClassJavaScript Coding with Class
JavaScript Coding with Classdavidwalsh83
 
J Query - Your First Steps
J Query - Your First StepsJ Query - Your First Steps
J Query - Your First StepsBronson Quick
 
Creating custom modules using YUI3
Creating custom modules using YUI3Creating custom modules using YUI3
Creating custom modules using YUI3Gonzalo Cordero
 
yui3 is Sexy - 使用 YUI 3 的 Sexy Part !
yui3 is Sexy - 使用 YUI 3 的 Sexy Part !yui3 is Sexy - 使用 YUI 3 的 Sexy Part !
yui3 is Sexy - 使用 YUI 3 的 Sexy Part !Joseph Chiang
 
Javascript essential-pattern
Javascript essential-patternJavascript essential-pattern
Javascript essential-pattern偉格 高
 
Creating Custom Dojo Widgets Using WTP
Creating Custom Dojo Widgets Using WTPCreating Custom Dojo Widgets Using WTP
Creating Custom Dojo Widgets Using WTPnsandonato
 
Week 4 - jQuery + Ajax
Week 4 - jQuery + AjaxWeek 4 - jQuery + Ajax
Week 4 - jQuery + Ajaxbaygross
 
Avinash Kundaliya: Javascript and WordPress
Avinash Kundaliya: Javascript and WordPressAvinash Kundaliya: Javascript and WordPress
Avinash Kundaliya: Javascript and WordPresswpnepal
 
Jquery mobile tutorial
Jquery mobile tutorialJquery mobile tutorial
Jquery mobile tutorialHarikaReddy115
 
Prism Navigation
Prism NavigationPrism Navigation
Prism NavigationEyal Vardi
 
Node.jsってどうなの?
Node.jsってどうなの?Node.jsってどうなの?
Node.jsってどうなの?Ryunosuke SATO
 

Similar to Cooking with jQuery (20)

Con5623 pdf 5623_001
Con5623 pdf 5623_001Con5623 pdf 5623_001
Con5623 pdf 5623_001
 
What's coming in Java EE 8
What's coming in Java EE 8What's coming in Java EE 8
What's coming in Java EE 8
 
JavaScript Coding with Class
JavaScript Coding with ClassJavaScript Coding with Class
JavaScript Coding with Class
 
J query intro_29thsep_alok
J query intro_29thsep_alokJ query intro_29thsep_alok
J query intro_29thsep_alok
 
J Query - Your First Steps
J Query - Your First StepsJ Query - Your First Steps
J Query - Your First Steps
 
Introduction to jQuery
Introduction to jQueryIntroduction to jQuery
Introduction to jQuery
 
jQuery Basic API
jQuery Basic APIjQuery Basic API
jQuery Basic API
 
jQuery Intro
jQuery IntrojQuery Intro
jQuery Intro
 
Creating custom modules using YUI3
Creating custom modules using YUI3Creating custom modules using YUI3
Creating custom modules using YUI3
 
yui3 is Sexy - 使用 YUI 3 的 Sexy Part !
yui3 is Sexy - 使用 YUI 3 的 Sexy Part !yui3 is Sexy - 使用 YUI 3 的 Sexy Part !
yui3 is Sexy - 使用 YUI 3 的 Sexy Part !
 
Javascript essential-pattern
Javascript essential-patternJavascript essential-pattern
Javascript essential-pattern
 
Jquery
JqueryJquery
Jquery
 
Creating Custom Dojo Widgets Using WTP
Creating Custom Dojo Widgets Using WTPCreating Custom Dojo Widgets Using WTP
Creating Custom Dojo Widgets Using WTP
 
Week 4 - jQuery + Ajax
Week 4 - jQuery + AjaxWeek 4 - jQuery + Ajax
Week 4 - jQuery + Ajax
 
Avinash Kundaliya: Javascript and WordPress
Avinash Kundaliya: Javascript and WordPressAvinash Kundaliya: Javascript and WordPress
Avinash Kundaliya: Javascript and WordPress
 
jQuery
jQueryjQuery
jQuery
 
Jquery mobile tutorial
Jquery mobile tutorialJquery mobile tutorial
Jquery mobile tutorial
 
Prism Navigation
Prism NavigationPrism Navigation
Prism Navigation
 
jQuery Introduction
jQuery IntroductionjQuery Introduction
jQuery Introduction
 
Node.jsってどうなの?
Node.jsってどうなの?Node.jsってどうなの?
Node.jsってどうなの?
 

Recently uploaded

IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsEnterprise Knowledge
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
Developing An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of BrazilDeveloping An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of BrazilV3cube
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationRadu Cotescu
 
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...gurkirankumar98700
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfEnterprise Knowledge
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountPuma Security, LLC
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsMaria Levchenko
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationMichael W. Hawkins
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...apidays
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking MenDelhi Call girls
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure servicePooja Nehwal
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxMalak Abu Hammad
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonetsnaman860154
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking MenDelhi Call girls
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesSinan KOZAK
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Allon Mureinik
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptxHampshireHUG
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdfhans926745
 

Recently uploaded (20)

IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Developing An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of BrazilDeveloping An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of Brazil
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path Mount
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptx
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen Frames
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 

Cooking with jQuery

  • 1. THE jOUERY COMPANY http://appendto.com Copyright © 2010 appendTo, LLC.
  • 2. OSCON jQuery Training Introduction to jQuery Copyright © 2010 appendTo, LLC. THE jOUERY COMPANY
  • 3. OSCON jQuery Training Introduction to jQuery ‣ The jQuery Project ‣ Including jQuery ‣ The jQuery Object ‣ Introduction to JavaScript ‣ Lifecycle of a Page Copyright © 2010 appendTo, LLC. THE jOUERY COMPANY
  • 4. OSCON jQuery Training The jQuery Project Copyright © 2010 appendTo, LLC. THE jOUERY COMPANY
  • 5. OSCON jQuery Training jQuery Project - jquery.org (Software Freedom Conservancy) jQuery Core jQuery UI jquery.com jqueryUI.com Sizzle JS QUnit sizzlejs.com qunitjs.com Copyright © 2010 appendTo, LLC. THE jOUERY COMPANY
  • 6. OSCON jQuery Training ‣ jquery.com Downloading ‣ api.jquery.com Documentation ‣ forum.jquery.com Community ‣ meetups.jquery.com Local Community ‣ plugins.jquery.com Extending ‣ jqueryui.com Project Supported UI Library Copyright © 2010 appendTo, LLC. THE jOUERY COMPANY
  • 7. OSCON jQuery Training Including jQuery Copyright © 2010 appendTo, LLC. THE jOUERY COMPANY
  • 8. OSCON jQuery Training Locations ‣ http://code.jquery.com/jquery-1.4.2.min.js ‣ SSL vs. Non SSL? ‣ src=“//code.jquery.com/jquery-1.4.2.min.js” Copyright © 2010 appendTo, LLC. THE jOUERY COMPANY
  • 9. OSCON jQuery Training Source Minified Copyright © 2010 appendTo, LLC. THE jOUERY COMPANY
  • 10. OSCON jQuery Training The jQuery Object function jQuery(selector) { ... } // Select an element with jQuery jQuery(‘body’); // Use the $ for brevity var $ = jQuery; $(‘body’); Copyright © 2010 appendTo, LLC. THE jOUERY COMPANY
  • 11. OSCON jQuery Training Introduction to JavaScript Copyright © 2010 appendTo, LLC. THE jOUERY COMPANY
  • 12. OSCON jQuery Training Introduction to JavaScript ‣ Script blocks ‣ Quotes and Whitespace ‣ Variables ‣ Functions ‣ Object-Hash ‣ Objects Copyright © 2010 appendTo, LLC. THE jOUERY COMPANY
  • 13. OSCON jQuery Training Script Blocks ‣ Scripts can be included inline ‣ <script type=”text/javascript”> // Your script here </script> ‣ Or externally ‣ <script src=”url-to-script.js” type=”text/javascript”></script> Copyright © 2010 appendTo, LLC. THE jOUERY COMPANY
  • 14. OSCON jQuery Training Quotes & Whitespace // Single Quotes var name = ‘John’; // Double Quotes var name = “John”; // Whitespace var name = ‘John’; // Terminate statements with a semi colon; // Will work, but bad practice! var name = ‘John’ Copyright © 2010 appendTo, LLC. THE jOUERY COMPANY
  • 15. OSCON jQuery Training Variables ‣ Variable names may include a-zA-Z0-9_$ as valid characters ‣ Variable scope is applied through the use of the var keyword ‣ Variables have type: ‣ object, number, string, boolean ‣ array(object), function(object) Copyright © 2010 appendTo, LLC. THE jOUERY COMPANY
  • 16. OSCON jQuery Training Variables // String var name = ‘John’; // Integer(number) var age = 30; // Array var children = [‘Jane’, ‘Jimmy’]; // Boolean var isMarried = true; Copyright © 2010 appendTo, LLC. THE jOUERY COMPANY
  • 17. OSCON jQuery Training Functions function alertName() { alert(‘Hello John’); } // Accept arguments function alertName(name) { alert(‘Hello ‘ + name); } // Call the function alertName(‘John’); //Hello John Copyright © 2010 appendTo, LLC. THE jOUERY COMPANY
  • 18. OSCON jQuery Training Functions // Function assignment var alertName = function(name) { alert(‘Hello ‘ + name); } // Call the function alertName(‘John’); //Hello John Copyright © 2010 appendTo, LLC. THE jOUERY COMPANY
  • 19. OSCON jQuery Training Variable Scope var name = ‘John’; function myFunction() { alert(‘Name is: ‘ + name); } ... myFunction(); //Name is John Copyright © 2010 appendTo, LLC. THE jOUERY COMPANY
  • 20. OSCON jQuery Training Variable Scope var name = ‘John’; function myFunction() { var name = ‘Jim’; alert(‘Name is: ‘ + name); } Copyright © 2010 appendTo, LLC. THE jOUERY COMPANY
  • 21. OSCON jQuery Training Object-hash (Object Literal) // Empty object var person = {}; // Object-hash may contain key/values var person = { name: ‘John’, age: 30, children: [‘Jane’, ‘Jimmy’], isMarried: true }; Copyright © 2010 appendTo, LLC. THE jOUERY COMPANY
  • 22. OSCON jQuery Training Object var person = { name: ‘John’, age: 30, introduceYourself: function() { alert(this.name + ‘ is ‘ + this.age); } }; person.introduceYourself(); //John is 30 Copyright © 2010 appendTo, LLC. THE jOUERY COMPANY
  • 23. OSCON jQuery Training Lifecycle of a Page Copyright © 2010 appendTo, LLC. THE jOUERY COMPANY
  • 24. OSCON jQuery Training Lifecycle of a Page ‣ Initial HTTP Request ‣ Load Scripts, Stylesheets and Images ‣ Scripts block! ‣ Head first style, scripts later Copyright © 2010 appendTo, LLC. THE jOUERY COMPANY
  • 25. OSCON jQuery Training Page Load <!doctype html> <html><head> <link href=”style.css” rel=”stylesheet” /> <script src=”jquery-1.4.2.js”></script> <script type=”text/javascript”> $(‘p’).css(‘color’, ‘red’); //magic </script> </head> <body> <p>Hello world!</p> </body></html> Copyright © 2010 appendTo, LLC. THE jOUERY COMPANY
  • 26. OSCON jQuery Training DOM Ready // Callback function function domIsReady() { $(‘body’).append(‘Hello world’); //magic } $(document).ready(domIsReady); Copyright © 2010 appendTo, LLC. THE jOUERY COMPANY
  • 27. OSCON jQuery Training Page Load <!doctype html> <html><head> <link href=”style.css” rel=”stylesheet” /> <script src=”jquery-1.4.2.js”></script> <script type=”text/javascript”> function domIsReady() { $(‘p’).css(‘color’, ‘red’); //magic } $(document).ready(domIsReady); </script> </head> <body> <p>Hello world!</p> </body></html> Copyright © 2010 appendTo, LLC. THE jOUERY COMPANY
  • 28. OSCON jQuery Training Page Load <!doctype html> <html><head> <link href=”style.css” rel=”stylesheet” /> </head><body> <p>Hello world!</p> <script src=”jquery-1.4.2.js”></script> <script type=”text/javascript”> $(‘p’).css(‘color’, ‘red’); //magic </script> </body> </html> Copyright © 2010 appendTo, LLC. THE jOUERY COMPANY
  • 29. OSCON jQuery Training Questions? Copyright © 2010 appendTo, LLC. THE jOUERY COMPANY
  • 30. OSCON jQuery Training jQuery and Selectors Copyright © 2010 appendTo, LLC. THE jOUERY COMPANY
  • 31. OSCON jQuery Training jQuery and Selectors ‣ Selectors ‣ Compound Selectors ‣ Selecting by the API ‣ The Context Argument Copyright © 2010 appendTo, LLC. THE jOUERY COMPANY
  • 32. OSCON jQuery Training Selectors // Select By ID <div id=”foo”></div> <div></div> $(‘#foo’); <div id=”foo”></div> <div></div> Copyright © 2010 appendTo, LLC. THE jOUERY COMPANY
  • 33. OSCON jQuery Training Selectors // Select by class <div class=”myClass foo bar”></div> <div class=”baz myClass”></div> <div class=”bar”></div> $(‘.myClass’) <div class=”myClass foo bar”></div> <div class=”baz myClass”></div> <div class=”bar”></div> Copyright © 2010 appendTo, LLC. THE jOUERY COMPANY
  • 34. OSCON jQuery Training Selectors // Select by tag <ul> <li>Apple</li> <li>Pear</li> </ul> $(“li”); <ul> <li>Apple</li> <li>Pear</li> </ul> Copyright © 2010 appendTo, LLC. THE jOUERY COMPANY
  • 35. OSCON jQuery Training Compound Selectors <p class=”important”></p> <p></p> <p class=”warning”></p> <p class=”important warning”></p> $(‘p.important,p.warning’); <p class=”important”></p> <p></p> <p class=”warning”></p> <p class=”important warning”></p> Copyright © 2010 appendTo, LLC. THE jOUERY COMPANY
  • 36. OSCON jQuery Training Compound Selectors ‣ As of 1.4+ elements are always returned in document order Copyright © 2010 appendTo, LLC. THE jOUERY COMPANY
  • 37. OSCON jQuery Training Select By Relationship Copyright © 2010 appendTo, LLC. THE jOUERY COMPANY
  • 38. OSCON jQuery Training Select By Relationship // Children by method <ul> <li>Fork</li> <li>Spoon</li> </ul> $(“ul”).children(); <ul> <li>Fork</li> <li>Spoon</li> </ul> Copyright © 2010 appendTo, LLC. THE jOUERY COMPANY
  • 39. OSCON jQuery Training Select By Relationship // Children by selector <ul> <li>Fork</li> <li>Spoon</li> </ul> $(“ul > li”); <ul> <li>Fork</li> <li>Spoon</li> </ul> Copyright © 2010 appendTo, LLC. THE jOUERY COMPANY
  • 40. OSCON jQuery Training Select By Relationship // Siblings by method <div> <a href=’#’>link</a> <p>Lorem Ipsum</p> </div> <div> <a href=’#’>another link</a> <p>Lorem Ipsum</p> </div> $(‘a’).siblings(); Copyright © 2010 appendTo, LLC. THE jOUERY COMPANY
  • 41. OSCON jQuery Training Select By Relationship // Siblings by method <div> <a href=’#’>link</a> <p>Lorem Ipsum</p> </div> <div> <a href=’#’>another link</a> <p>Lorem Ipsum</p> </div> Copyright © 2010 appendTo, LLC. THE jOUERY COMPANY
  • 42. OSCON jQuery Training Select By Relationship // Parent by method <div> <a href=’#’>link</a> <p>Lorem Ipsum</p> </div> <div> <a href=’#’>another link</a> <p>Lorem Ipsum</p> </div> $(‘a’).parent(); Copyright © 2010 appendTo, LLC. THE jOUERY COMPANY
  • 43. OSCON jQuery Training Select By Relationship // Parent result <div> <a href=’#’>link</a> <p>Lorem Ipsum</p> </div> <div> <a href=’#’>another link</a> <p>Lorem Ipsum</p> </div> Copyright © 2010 appendTo, LLC. THE jOUERY COMPANY
  • 44. OSCON jQuery Training Select By Relationship // Descendant by method <ul> <li>Fork <a href=’#’>Click to use</a></li> <li>Spoon <a href=’#’>Click to use</a></li> </ul> $(“ul”).find(‘a’); //selector within find method <ul> <li>Fork <a href=’#’>Click to use</a></li> <li>Spoon <a href=’#’>Click to use</a></li> </ul> Copyright © 2010 appendTo, LLC. THE jOUERY COMPANY
  • 45. OSCON jQuery Training Select By Relationship // Descendant by selector <ul> <li>Fork <a href=’#’>Click to use</a></li> <li>Spoon <a href=’#’>Click to use</a></li> </ul> $(“ul a”); <ul> <li>Fork <a href=’#’>Click to use</a></li> <li>Spoon <a href=’#’>Click to use</a></li> </ul> Copyright © 2010 appendTo, LLC. THE jOUERY COMPANY
  • 46. OSCON jQuery Training Selector Pitfalls //Over selection $(‘div#myId’); vs. $(‘#myId’); //Under selection $(‘.randomClass’); vs. $(‘div.randomClass’); Copyright © 2010 appendTo, LLC. THE jOUERY COMPANY
  • 47. OSCON jQuery Training The Context //Entire Document $(‘div’) //Scope your selector //$(‘selector’, <context>) $(‘#table’).find(‘selector’) $(‘a’).click(function() { $(‘span’, this)... }); Copyright © 2010 appendTo, LLC. THE jOUERY COMPANY
  • 48. OSCON jQuery Training The Context ‣ Two different scoping methods ‣ $(‘selector’, this) ‣ $(this).find(‘selector’) ‣ Can access context with the context property ‣ 1.3 and later Copyright © 2010 appendTo, LLC. THE jOUERY COMPANY
  • 49. OSCON jQuery Training Context Pitfalls var $mySelection = $(‘selector’, ‘#myid’); var $mySelection.context = ? var $mySelection2 = $(‘selector’, $(‘#myid’)[0]); var $mySelection2.context = ? Copyright © 2010 appendTo, LLC. THE jOUERY COMPANY
  • 50. OSCON jQuery Training Questions? Copyright © 2010 appendTo, LLC. THE jOUERY COMPANY
  • 51. OSCON jQuery Training jQuery and Methods Copyright © 2010 appendTo, LLC. THE jOUERY COMPANY
  • 52. OSCON jQuery Training jQuery and Methods ‣ Do Something ‣ Showing and Hiding ‣ Iteration ‣ Styling ‣ Behavior Copyright © 2010 appendTo, LLC. THE jOUERY COMPANY
  • 53. OSCON jQuery Training Do Something $('p').bind('click',function(){ $(this).effect('drop'); }); // hides element by pulling it left Copyright © 2010 appendTo, LLC. THE jOUERY COMPANY
  • 54. OSCON jQuery Training Do Something <p>One</p> <p>Two</p> <p>Three</p> // Find Something $(‘p’) // Do Something $(‘p’).hide(); // Generic Syntax $(‘p’) . <Method Name> ( [PARAMETERS] ); Copyright © 2010 appendTo, LLC. THE jOUERY COMPANY
  • 55. OSCON jQuery Training Showing and Hiding Copyright © 2010 appendTo, LLC. THE jOUERY COMPANY
  • 56. OSCON jQuery Training Showing and Hiding // HTML <p>One</p> <p>Two</p> <p>Three</p> // Show the elements $(‘p’).show(); // Hide the elements $(‘p’).hide(); Copyright © 2010 appendTo, LLC. THE jOUERY COMPANY
  • 57. OSCON jQuery Training Showing and Hiding // HTML <p>One</p> <p>Two</p> <p>Three</p> // Show the elements $(‘p’).show(); // Hide the elements $(‘p’).hide(); Copyright © 2010 appendTo, LLC. THE jOUERY COMPANY
  • 58. OSCON jQuery Training Showing and Hiding // HTML <p>One</p> <p>Two</p> <p>Three</p> // Show the elements $(‘p’).show(); // Hide the elements $(‘p’).hide(); Copyright © 2010 appendTo, LLC. THE jOUERY COMPANY
  • 59. OSCON jQuery Training Iteration Copyright © 2010 appendTo, LLC. THE jOUERY COMPANY
  • 60. OSCON jQuery Training Iteration <p>One</p> <p>Two</p> <p>Three</p> $(‘p’).each(function() { // Operates on each p individually var rand; rand = Math.floor( Math.random() * 1 ); if(rand > 1) { $(this).hide(); } }); Copyright © 2010 appendTo, LLC. THE jOUERY COMPANY
  • 61. OSCON jQuery Training Iteration <p>One</p> <p>Two</p> <p>Three</p> $(‘p’).each(function() { // Operates on each p individually var rand; rand = Math.floor( Math.random() * 1 ); if(rand > 1) { $(this).hide(); } }); Copyright © 2010 appendTo, LLC. THE jOUERY COMPANY
  • 62. OSCON jQuery Training Iteration <p>One</p> <p>Two</p> <p>Three</p> $(‘p’).each(function() { // Operates on each p individually var rand; rand = Math.floor( Math.random() * 1 ); if(rand > 1) { $(this).hide(); } }); Copyright © 2010 appendTo, LLC. THE jOUERY COMPANY
  • 63. OSCON jQuery Training Iteration <p>One</p> <p>Two</p> <p>Three</p> $(‘p’).each(function() { // Operates on each p individually var rand; rand = Math.floor( Math.random() * 1 ); if(rand > 1) { $(this).hide(); } }); Copyright © 2010 appendTo, LLC. THE jOUERY COMPANY
  • 64. OSCON jQuery Training Iteration ‣ The anonymous function Copyright © 2010 appendTo, LLC. THE jOUERY COMPANY
  • 65. OSCON jQuery Training The Anonymous Function function foo() { ... } Copyright © 2010 appendTo, LLC. THE jOUERY COMPANY
  • 66. OSCON jQuery Training The Anonymous Function function foo() { ... } var foo = function() { ... } //do this $(document).click(foo); //dont do this $(document).click(foo()); Copyright © 2010 appendTo, LLC. THE jOUERY COMPANY
  • 67. OSCON jQuery Training The Anonymous Function function foo() { ... } var foo = function() { ... } $(document).click(foo); $(document).click(function() { ... }); Copyright © 2010 appendTo, LLC. THE jOUERY COMPANY
  • 68. OSCON jQuery Training Iteration // HTML <p>One</p> <p>Two</p> <p>Three</p> // Changes all elements returned // via Implicit Iteration $(‘p’).css(‘color’,‘red’); Copyright © 2010 appendTo, LLC. THE jOUERY COMPANY
  • 69. OSCON jQuery Training “Each”itis AntiPattern // HTML <p>One</p> <p>Two</p> <p>Three</p> // Changes all elements returned // via incredibly inefficient explicit iteration $(‘p’).each(function(i,v){ $(this).css(‘color’,‘red’); }); Copyright © 2010 appendTo, LLC. THE jOUERY COMPANY
  • 70. OSCON jQuery Training Styling Copyright © 2010 appendTo, LLC. THE jOUERY COMPANY
  • 71. OSCON jQuery Training Styling // HTML <p>One</p> <p class=”foo”>Two</p> <p>Three</p> $(‘p’).addClass(‘enabled’); $(‘p’).removeClass(‘foo’); $(‘p’).toggleClass(‘foo’); Copyright © 2010 appendTo, LLC. THE jOUERY COMPANY
  • 72. OSCON jQuery Training Styling // HTML <p class=”enabled”>One</p> <p class=”enabled foo”>Two</p> <p class=”enabled”>Three</p> $(‘p’).addClass(‘enabled’); $(‘p’).removeClass(‘foo’); $(‘p’).toggleClass(‘foo’); Copyright © 2010 appendTo, LLC. THE jOUERY COMPANY
  • 73. OSCON jQuery Training Styling // HTML <p class=”enabled”>One</p> <p class=”enabled”>Two</p> <p class=”enabled”>Three</p> $(‘p’).addClass(‘enabled’); $(‘p’).removeClass(‘foo’); $(‘p’).toggleClass(‘foo’); Copyright © 2010 appendTo, LLC. THE jOUERY COMPANY
  • 74. OSCON jQuery Training Styling // HTML <p class=”enabled foo”>One</p> <p class=”enabled foo”>Two</p> <p class=”enabled foo”>Three</p> $(‘p’).addClass(‘enabled’); $(‘p’).removeClass(‘foo’); $(‘p’).toggleClass(‘foo’); Copyright © 2010 appendTo, LLC. THE jOUERY COMPANY
  • 75. OSCON jQuery Training Styling <p>One</p> <p>Two</p> <p>Three</p> $(‘p’).css(‘color’,‘red’); $(‘p’).css(‘font-weight’,‘bold’); $(‘p’).css({ color: ‘red’, fontWeight: ‘bold’ }); Copyright © 2010 appendTo, LLC. THE jOUERY COMPANY
  • 76. OSCON jQuery Training Styling <p style=”color: red;”>One</p> <p style=”color: red;”>Two</p> <p style=”color: red;”>Three</p> $(‘p’).css(‘color’,‘red’); $(‘p’).css(‘font-weight’,‘bold’); $(‘p’).css({ ‘background-color’: ‘blue’, fontWeight: ‘bold’, border: ‘1px solid black’ }); Copyright © 2010 appendTo, LLC. THE jOUERY COMPANY
  • 77. OSCON jQuery Training Behavior Copyright © 2010 appendTo, LLC. THE jOUERY COMPANY
  • 78. OSCON jQuery Training Behavior // HTML <p>One</p> <p>Two</p> <p>Three</p> $(‘p’).click(function(event) { $(this).css(‘color’, ‘red’); }); Copyright © 2010 appendTo, LLC. THE jOUERY COMPANY
  • 79. OSCON jQuery Training Behavior // HTML <p>One</p> <p>Two</p> <p>Three</p> $(‘p’).hover(function(event) { $(this).css(‘color’, ‘red’); }, function(event) { $(this).css(‘color’, ‘’); }); Copyright © 2010 appendTo, LLC. THE jOUERY COMPANY
  • 80. OSCON jQuery Training Behavior // HTML <p>One</p> <p>Two</p> <p>Three</p> // Add event $(‘p’).click(function(event) { $(this).css(‘color’, ‘red’); }); // Remove event $(‘p’).unbind(‘click’); Copyright © 2010 appendTo, LLC. THE jOUERY COMPANY
  • 81. OSCON jQuery Training Questions? Copyright © 2010 appendTo, LLC. THE jOUERY COMPANY
  • 82. OSCON jQuery Training Chaining and Sentences Copyright © 2010 appendTo, LLC. THE jOUERY COMPANY
  • 83. OSCON jQuery Training Chaining and Sentences ‣ Method Chaining ‣ The Stack Architecture ‣ Finding vs. Filtering Elements Copyright © 2010 appendTo, LLC. THE jOUERY COMPANY
  • 84. OSCON jQuery Training Method Chaining Copyright © 2010 appendTo, LLC. THE jOUERY COMPANY
  • 85. OSCON jQuery Training Method Chaining $(‘#myForm a’) .addClass(‘.highlight’) .click(function(){...}) .hover(function(){...},function(){...}); Copyright © 2010 appendTo, LLC. THE jOUERY COMPANY
  • 86. OSCON jQuery Training Method Chaining $(‘#myForm a’) .addClass(‘.highlight’) .click(function(){...}) .hover(function(){...},function(){...}); Copyright © 2010 appendTo, LLC. THE jOUERY COMPANY
  • 87. OSCON jQuery Training Method Chaining $(‘#myForm a’) .addClass(‘.highlight’) .click(function(){...}) .hover(function(){...},function(){...}); Copyright © 2010 appendTo, LLC. THE jOUERY COMPANY
  • 88. OSCON jQuery Training Method Chaining $(‘#myForm a’) .addClass(‘.highlight’) .click(function(){...}) .hover(function(){...},function(){...}); Copyright © 2010 appendTo, LLC. THE jOUERY COMPANY
  • 89. OSCON jQuery Training What Breaks the Chain? //Getters vs. Setters $(...) //jQuery selector .html(‘Hello world’) .addClass(‘hello’) $(...) .html() .addClass(‘hello’) Copyright © 2010 appendTo, LLC. THE jOUERY COMPANY
  • 90. OSCON jQuery Training What Breaks the Chain? //Getters vs. Setters $(...) .html(‘Hello world’) //non breaking .addClass(‘hello’) $(...) .html() .addClass(‘hello’) Copyright © 2010 appendTo, LLC. THE jOUERY COMPANY
  • 91. OSCON jQuery Training What Breaks the Chain? //Getters vs. Setters $(...) .html(‘Hello world’) .addClass(‘hello’) //class will be added $(...) .html() .addClass(‘hello’) Copyright © 2010 appendTo, LLC. THE jOUERY COMPANY
  • 92. OSCON jQuery Training What Breaks the Chain? //Getters vs. Setters $(...) .html(‘Hello world’) .addClass(‘hello’) $(...) //jQuery selector .html() .addClass(‘hello’) Copyright © 2010 appendTo, LLC. THE jOUERY COMPANY
  • 93. OSCON jQuery Training What Breaks the Chain? //Getters vs. Setters $(...) .html(‘Hello world’) .addClass(‘hello’) $(...) .html() //breaking .addClass(‘hello’) Copyright © 2010 appendTo, LLC. THE jOUERY COMPANY
  • 94. OSCON jQuery Training What Breaks the Chain? //Getters vs. Setters $(...) .html(‘Hello world’) .addClass(‘hello’) $(...) .html() .addClass(‘hello’) //runtime error Copyright © 2010 appendTo, LLC. THE jOUERY COMPANY
  • 95. OSCON jQuery Training What Breaks the Chain? //put getter last var myHtml = $(...) .addClass(‘hello’) .html(); //store selection in variable //when multiple getters //are needed var $mySelection = $(...); var myHtml = $mySelection.html(); Copyright © 2010 appendTo, LLC. THE jOUERY COMPANY
  • 96. OSCON jQuery Training The Stack Architecture Copyright © 2010 appendTo, LLC. THE jOUERY COMPANY
  • 97. OSCON jQuery Training jQuery Collections (Buckets) $(‘body’) [body] .find(‘p’) [p, p, p] => [body] .find(‘a’) [a, a] => [p, p, p] => [body] .addClass(‘foo’) .end() [p, p, p] => [body] .end() [body] Copyright © 2010 appendTo, LLC. THE jOUERY COMPANY
  • 98. OSCON jQuery Training Method Chaining $(‘tr’) .filter(‘:odd’) .addClass(‘odd’) .end() .find(‘td.company’) .addClass(‘companyName’); Copyright © 2010 appendTo, LLC. THE jOUERY COMPANY
  • 99. OSCON jQuery Training Finding vs. Filtering Copyright © 2010 appendTo, LLC. THE jOUERY COMPANY
  • 100. OSCON jQuery Training Finding Elements $(‘body’) [body] .find(‘p’) [p, p, p] => [body] .find(‘a’) [a, a] => [p, p, p] => [body] .addClass(‘foo’) .end() [p, p, p] => [body] .end() [body] Copyright © 2010 appendTo, LLC. THE jOUERY COMPANY
  • 101. OSCON jQuery Training Filtering Elements $(‘a’) [a, a.foo, a] .filter(‘.foo’) [a.foo] => [a, a.foo, a] .attr(‘href’, ‘http://appendto.com’) .end() [a, a.foo, a] Copyright © 2010 appendTo, LLC. THE jOUERY COMPANY
  • 102. OSCON jQuery Training Find vs. Filter ‣ find() searches the DOM for descendants of elements in the current jQuery wrapped collection ‣ filter() searches the current jQuery collection and returns a reduced set (sub set) Copyright © 2010 appendTo, LLC. THE jOUERY COMPANY
  • 103. OSCON jQuery Training Questions? Copyright © 2010 appendTo, LLC. THE jOUERY COMPANY
  • 104. OSCON jQuery Training jQuery and DOM Manipulation Copyright © 2010 appendTo, LLC. THE jOUERY COMPANY
  • 105. OSCON jQuery Training jQuery and DOM Manipulation ‣ Creating Elements ‣ Inserting Elements ‣ Removing Elements ‣ Cloning Elements ‣ Wrapping Elements ‣ Attributes ‣ Data Copyright © 2010 appendTo, LLC. THE jOUERY COMPANY
  • 106. OSCON jQuery Training Creating Elements Copyright © 2010 appendTo, LLC. THE jOUERY COMPANY
  • 107. OSCON jQuery Training Creating Elements $(‘<div></div>’); // Creates ... <div></div> var ul = $(‘<ul><li>Hello</li></ul>’); // Creates ... <ul> <li>Hello</li> </ul> Copyright © 2010 appendTo, LLC. THE jOUERY COMPANY
  • 108. OSCON jQuery Training Creating Elements // New in 1.4 $("<div/>", { class: "test", text: "Click me!", click: function(){ $(this).toggleClass("test"); } }); // Clicking toggles the class <div class=”test”>Click me!</div> Copyright © 2010 appendTo, LLC. THE jOUERY COMPANY
  • 109. OSCON jQuery Training Inserting Elements Copyright © 2010 appendTo, LLC. THE jOUERY COMPANY
  • 110. OSCON jQuery Training Inserting Elements // Before <p>Apple</p> <p>Orange</p> $(‘p’).after(‘<img src=”logo.png” />’); // After <p>Apple</p> <img src=”logo.png /> <p>Orange</p> <img src=”logo.png /> Copyright © 2010 appendTo, LLC. THE jOUERY COMPANY
  • 111. OSCON jQuery Training Inserting Elements // Before <p>Apple</p> <p>Orange</p> $(‘p’).before(‘<img src=”logo.png” />’); // After <img src=”logo.png” /> <p>Apple</p> <img src=”logo.png” /> <p>Orange</p> Copyright © 2010 appendTo, LLC. THE jOUERY COMPANY
  • 112. OSCON jQuery Training Inserting Elements // Before <p id=”apple”>Apple</p> <p id=”orange”>Orange</p> $(‘#apple’).prepend(‘<img src=”apple.png” />’); $(‘#orange’).append(‘<img src=”orange.png” />’); // After <p id=”apple”><img src=”apple.png” />Apple</p> <p id=”orange”>Orange<img src=”orange.png” /></p> Copyright © 2010 appendTo, LLC. THE jOUERY COMPANY
  • 113. OSCON jQuery Training // Before <p id=”apple”>Apple</p> <p id=”orange”>Orange</p> $(‘<img src=”apple.png” />’).prependTo(‘#apple’); $(‘<img src=”orange.png” />’).appendTo(‘#orange’); // After <p id=”apple”><img src=”apple.png” />Apple</p> <p id=”orange”>Orange<img src=”orange.png” /></p> Copyright © 2010 appendTo, LLC. THE jOUERY COMPANY
  • 114. OSCON jQuery Training Element Creation Best Practice //Use object literal syntax for single (non-nested) element creation //If creating nested elements use a single string //yes $(‘<div><a href=”url”>link text</a></div>’) .appendTo(‘body’); //slower $(‘<a href=”url”>link text</a>’) .appendTo(‘<div>’) .appendTo(‘body’); Copyright © 2010 appendTo, LLC. THE jOUERY COMPANY
  • 115. OSCON jQuery Training Removing Elements Copyright © 2010 appendTo, LLC. THE jOUERY COMPANY
  • 116. OSCON jQuery Training Removing Elements // Before <div> <p>Red</p> <p>Green</p> </div> // Removing Elements Directly $(‘p’).remove(); // After <div> </div> Copyright © 2010 appendTo, LLC. THE jOUERY COMPANY
  • 117. OSCON jQuery Training Empty Elements // Before <div> <p><em>Red</em></p> <p><em>Green</em></p> </div> $(‘p’).empty(); // After <div> <p></p> <p></p> </div> Copyright © 2010 appendTo, LLC. THE jOUERY COMPANY
  • 118. OSCON jQuery Training Detaching Elements // Before <div id=”container”> <p>Foo Bar</p> </div> var $bucket = $(‘p’).detach(); $bucket.insertAfter(‘#container’); // After <div id=”container> </div> <p>Foo Bar</p> Copyright © 2010 appendTo, LLC. THE jOUERY COMPANY
  • 119. OSCON jQuery Training Cloning Elements Copyright © 2010 appendTo, LLC. THE jOUERY COMPANY
  • 120. OSCON jQuery Training Cloning Elements // Before <div id=”source”> <strong>The Source</strong> </div> // Copies the element instead of moving it $(‘#source’).clone().appendTo(‘body’); // After <div id=”source”> <strong>The Source</strong> </div> <div id=”source”> <strong>The Source</strong> </div> Copyright © 2010 appendTo, LLC. THE jOUERY COMPANY
  • 121. OSCON jQuery Training Cloning Elements // Before <div id=”source”> <strong>The Source</strong> </div> // Copies the element instead of moving it $(‘#source’).clone(true).appendTo(‘body’); // After <div id=”source”> <strong>The Source</strong> </div> <div id=”source”> <strong>The Source</strong> </div> Copyright © 2010 appendTo, LLC. THE jOUERY COMPANY
  • 122. OSCON jQuery Training Modifying Elements Copyright © 2010 appendTo, LLC. THE jOUERY COMPANY
  • 123. OSCON jQuery Training Wrapping Elements // Before <p>Hello world</p> <p>Foo bar</p> $(‘p’).wrap(‘<div></div>’); // After <div><p>Hello world</p></div> <div><p>Foo bar</p></div> Copyright © 2010 appendTo, LLC. THE jOUERY COMPANY
  • 124. OSCON jQuery Training Wrapping Elements // Before <p>Hello world</p> <p>Foo bar</p> // As a group $(‘p’).wrapAll(‘<div></div>’); // After <div><p>Hello world</p> <p>Foo bar</p></div> Copyright © 2010 appendTo, LLC. THE jOUERY COMPANY
  • 125. OSCON jQuery Training Wrapping Elements // Before <p>Hello world</p> <p>Foo bar</p> // Wrapping Children $(‘p’).wrapInner(‘<a href=”#”></a>’); // After <p><a href=”#”>Hello world</a></p> <p><a href=”#”>Foo bar</a></p> Copyright © 2010 appendTo, LLC. THE jOUERY COMPANY
  • 126. OSCON jQuery Training Unwrapping Elements (new in 1.4+) // Before <div><p>Hello world</p></div> <div><p>Foo bar</p></div> //Individually $(‘p’).unwrap(); // After <p>Hello world</p> <p>Foo bar</p> Copyright © 2010 appendTo, LLC. THE jOUERY COMPANY
  • 127. OSCON jQuery Training Attributes Copyright © 2010 appendTo, LLC. THE jOUERY COMPANY
  • 128. OSCON jQuery Training .attr() // Before <img id=”logo” /> $(‘#logo’).attr(‘src’, ‘logo.png’); // After <img id=”logo” src=”logo.png” /> Copyright © 2010 appendTo, LLC. THE jOUERY COMPANY
  • 129. OSCON jQuery Training .attr() // Markup <img id=”logo” title=”Hello world” /> var title = $(‘#logo’).attr(‘title’); //title === “Hello world” Copyright © 2010 appendTo, LLC. THE jOUERY COMPANY
  • 130. OSCON jQuery Training .attr() // Before <img id=”logo” /> $(‘#logo’).attr({ src: ‘logo.png’, alt: ‘Company logo’ }); // After <img id=”logo” src=”logo.png” alt=”Company logo” /> Copyright © 2010 appendTo, LLC. THE jOUERY COMPANY
  • 131. OSCON jQuery Training .attr() // Before <img id=”logo” src=”logo.png” alt=”Company logo” /> $(‘#logo’).attr(‘class’, function() { var c = [‘a’, ‘b’, ‘c’]; var r = Math.floor( Math.random() * 3 ); return c[r]; }); // After (randomized class name) <img id=”logo” src=”logo.png” alt=”Company logo” class=”a” /> Copyright © 2010 appendTo, LLC. THE jOUERY COMPANY
  • 132. OSCON jQuery Training Element Contents <div id=”header”> <em>HEADER</em> </div> // Returns ‘<em>HEADER</em> var theHtml = $(‘#header’).html(); $(‘#header’).html(‘<ul><li>One</li></ul>’); <div id=”header”> <ul><li>One</li></ul> </div> Copyright © 2010 appendTo, LLC. THE jOUERY COMPANY
  • 133. OSCON jQuery Training Element Contents <div id=”header”> <em>HEADER</em> </div> // Returns ‘HEADER’ $(‘#header’).text(); $(‘#header’).text(‘<em>Hello world</em>’); <div id=”header”> &lt;em&gt;Hello world&lt;/em&gt; </div> Copyright © 2010 appendTo, LLC. THE jOUERY COMPANY
  • 134. OSCON jQuery Training .val() <input id=”email” type=‘text’ value=‘foo bar’ /> // Returns ‘foo bar’ $(‘#email’).val(); // Sets value to ‘The value’ $(‘#email’).val(‘The value’); <input id=”email” type=‘text’ value=‘The value’ /> $(‘select’).val([ ‘red’, ‘green’ ]); Copyright © 2010 appendTo, LLC. THE jOUERY COMPANY
  • 135. OSCON jQuery Training Data Copyright © 2010 appendTo, LLC. THE jOUERY COMPANY
  • 136. OSCON jQuery Training Data // HTML <div id=”myDiv”> <p>One</p> </div> // Potential for a Memory Leak var elem = $(‘#myDiv’)[0]; elem.foo = new String(‘xyz’); Copyright © 2010 appendTo, LLC. THE jOUERY COMPANY
  • 137. OSCON jQuery Training Data // HTML <div id=”myDiv”> <p>One</p> </div> // Cross Browser Safe Method to attach data $(‘#myDiv’).data(‘foo’, new String(‘xyz’)); var myVar = $(‘#myDiv’).data(‘foo’); $(‘#myDiv’).removeData(‘foo’); Copyright © 2010 appendTo, LLC. THE jOUERY COMPANY
  • 138. OSCON jQuery Training Data (new in 1.4+) var object1 = { abc: 123 }; var object2 = { xyz: 789 }; $(‘#myDiv’).data(‘object1’, object1); $(‘#myDiv’).data(‘object2’, object2); var objects = $(‘#myDiv’).data(); objects.object1; objects.object2; Copyright © 2010 appendTo, LLC. THE jOUERY COMPANY
  • 139. OSCON jQuery Training Questions? Copyright © 2010 appendTo, LLC. THE jOUERY COMPANY
  • 140. OSCON jQuery Training jQuery and Events Copyright © 2010 appendTo, LLC. THE jOUERY COMPANY
  • 141. OSCON jQuery Training jQuery and Events ‣ Binding Events ‣ Binding Multiple Events ‣ The Event Object ‣ Event Namespacing ‣ Event Propagation Copyright © 2010 appendTo, LLC. THE jOUERY COMPANY
  • 142. OSCON jQuery Training Binding Events Copyright © 2010 appendTo, LLC. THE jOUERY COMPANY
  • 143. OSCON jQuery Training jQuery Event Shortcuts // Binding an event $('a.tab').click(function(){ // event handling code $(this).css(‘color’, ‘red’); }); // Binding an event $('a.tab').mouseover(function(){ // event handling code $(this).css(‘color’, ‘red’); }); Copyright © 2010 appendTo, LLC. THE jOUERY COMPANY
  • 144. OSCON jQuery Training Common Types of Events ‣ click, dblclick, mouseover, mouseout ‣ mouseenter, mouseleave ‣ change, focus, blur ‣ keydown, keyup, keypress ‣ scroll, resize Copyright © 2010 appendTo, LLC. THE jOUERY COMPANY
  • 145. OSCON jQuery Training Hover Shortcut // mouseenter, mouseleave $(‘li’).hover( function() { $(this).addClass(‘hover’); }, function() { $(this).removeClass(‘hover’); }); Copyright © 2010 appendTo, LLC. THE jOUERY COMPANY
  • 146. OSCON jQuery Training Hover Shortcut // mouseenter, mouseleave $(‘li’) .bind(‘mouseenter’, function() { $(this).addClass(‘hover’); }) .bind(‘mouseleave’, function() { $(this).removeClass(‘hover’); }); Copyright © 2010 appendTo, LLC. THE jOUERY COMPANY
  • 147. OSCON jQuery Training Hover Shortcut // Optimal hover $(‘li’) .hover(function(evt) { var add = evt.type == ‘mouseenter’; $(this).toggleClass(‘hover’, add); }); Copyright © 2010 appendTo, LLC. THE jOUERY COMPANY
  • 148. OSCON jQuery Training Hover Shortcut // Optimal hover $(‘li’) .hover(function(evt) { $(this).toggleClass(‘hover’, evt.type == ‘mouseenter’); }); $(‘li’) .bind(‘mouseenter mouseleave’,fn); Copyright © 2010 appendTo, LLC. THE jOUERY COMPANY
  • 149. OSCON jQuery Training Binding Events with .bind() // Binding an event $('a.tab').bind('click',function(e){ // event handling code $(this).css(‘color’, ‘red’); }); // Unbinding an event $('a.tab').unbind('click'); Copyright © 2010 appendTo, LLC. THE jOUERY COMPANY
  • 150. OSCON jQuery Training Binding Events // Bind an event to execute once $('a.tab').one('click',function(e){ // event handling code $(this).css(‘color’,‘red’); }); Copyright © 2010 appendTo, LLC. THE jOUERY COMPANY
  • 151. OSCON jQuery Training Binding Multiple Events Copyright © 2010 appendTo, LLC. THE jOUERY COMPANY
  • 152. OSCON jQuery Training Binding Multiple Events $(‘div’).bind(‘mouseover mouseout’, function(e) { if ( e.type == ‘mouseover’ ) { $(this).addClass('highlight'); } elseif ( e.type == ‘mouseout’ ) { $(this).removeClass('highlight'); } }); $(‘div’).unbind(‘mouseover mouseout’); $(‘div’).unbind(); Copyright © 2010 appendTo, LLC. THE jOUERY COMPANY
  • 153. OSCON jQuery Training Binding Multiple Events $('a.tab').hover( function(e){ $(this).addClass('highlight'); }, function(e){ $(this).removeClass('highlight'); } ); // Unbind the hover event $(‘a.tab’).unbind('mouseenter mouseleave') Copyright © 2010 appendTo, LLC. THE jOUERY COMPANY
  • 154. OSCON jQuery Training Binding Multiple Events // Arbitrary number of functions to execute cyclically on click $('a.tab').toggle( function(){ $(this).css('color','red'); }, function(){ $(this).css('color','yellow'); }, function(){ $(this).css('color','green'); }); Copyright © 2010 appendTo, LLC. THE jOUERY COMPANY
  • 155. OSCON jQuery Training The Event Object Copyright © 2010 appendTo, LLC. THE jOUERY COMPANY
  • 156. OSCON jQuery Training The Event Object ‣ Event Object Properties type pageX timeStamp pageY target data relatedTarget result currentTarget which Copyright © 2010 appendTo, LLC. THE jOUERY COMPANY
  • 157. OSCON jQuery Training The Event Object ‣ event.type The name of the event (all lowercase) ‣ event.target The element that the event originated at ‣ event.pageX, event.pageY Coordinates in pixels of mouse position on page (not populated for key events) Copyright © 2010 appendTo, LLC. THE jOUERY COMPANY
  • 158. OSCON jQuery Training Event Namespacing Copyright © 2010 appendTo, LLC. THE jOUERY COMPANY
  • 159. OSCON jQuery Training Event Namespacing ‣ Tagging for event handlers ‣ Added in jQuery 1.2 namespace post - http://bit.ly/aCaFXS ‣ Simplifies unbinding of events Copyright © 2010 appendTo, LLC. THE jOUERY COMPANY
  • 160. OSCON jQuery Training Binding Namespaced Events $(‘div’) .bind(‘click’, fn) .bind(‘click.foo’, fn) .bind(‘mouseover.foo’, fn); // Unbind click.foo event $(‘div’).unbind(‘click.foo’); // Unbind all .foo namespaced events // click.foo, mouseover.foo $(‘div’).unbind(‘.foo’); Copyright © 2010 appendTo, LLC. THE jOUERY COMPANY
  • 161. OSCON jQuery Training Event Propagation Copyright © 2010 appendTo, LLC. THE jOUERY COMPANY
  • 162. OSCON jQuery Training Event Propagation - Anchor Tag <div><p> <a href=”#”>Link</a> </p></div> $(‘div’).click(function() { alert(‘clicked div!’); }); $(‘a’).click(function() { alert(‘clicked!’); }); Copyright © 2010 appendTo, LLC. THE jOUERY COMPANY
  • 163. OSCON jQuery Training Event Propagation - Paragraph Tag <div><p> <a href=”#”>Link</a> </p></div> $(‘div’).click(function() { alert(‘clicked div!’); }); $(‘a’).click(function() { alert(‘clicked!’); }); Copyright © 2010 appendTo, LLC. THE jOUERY COMPANY
  • 164. OSCON jQuery Training Event Propagation - Paragraph Tag <div><p> <a href=”#”>Link</a> </p></div> $(‘div’).click(function(evt) { // evt.target == a alert(‘clicked div!’); }); $(‘a’).click(function() { alert(‘clicked!’); }); Copyright © 2010 appendTo, LLC. THE jOUERY COMPANY
  • 165. OSCON jQuery Training Event Propagation - Div Tag <div id=”navigation”><p> <a href=”#”>Link</a> </p></div> $(‘#navigation’).click(function(evt) { // evt.target == anchor tag alert(‘clicked div!’); // this = Reference to div DOM element $(this).addClass(‘active’); }); $(‘a’).click(function() { alert(‘clicked!’); }); Copyright © 2010 appendTo, LLC. THE jOUERY COMPANY
  • 166. OSCON jQuery Training Event Propagation - Stopping Prop. <div><p> <a href=”#”>Link</a> </p></div> $(‘div’).click(function() { alert(‘clicked div!’); }); $(‘a’).click(function() { alert(‘clicked!’); return false; }); Copyright © 2010 appendTo, LLC. THE jOUERY COMPANY
  • 167. OSCON jQuery Training Event Propagation - Stopping Prop. <div><p> <a href=”#”>Link</a> </p></div> $(‘div’).click(function() { alert(‘clicked div!’); }); $(‘a’).click(function(evt) { alert(‘clicked!’); evt.stopPropagation(); evt.preventDefault(); return false; // Same as two lines above }); Copyright © 2010 appendTo, LLC. THE jOUERY COMPANY
  • 168. OSCON jQuery Training Event Propagation - Returning False Stop events from bubbling Prevent the default event action from occurring Copyright © 2010 appendTo, LLC. THE jOUERY COMPANY
  • 169. OSCON jQuery Training Live Events Copyright © 2010 appendTo, LLC. THE jOUERY COMPANY
  • 170. OSCON jQuery Training Live Events - Binding // Before <p>One</p> // Code $(‘p’).live(‘click’,function() { alert(‘P Pressed’) }); $(‘<p />’).text(‘Two’).appendTo(‘body’); // After <p>One</p> <p>Two</p> Copyright © 2010 appendTo, LLC. THE jOUERY COMPANY
  • 171. OSCON jQuery Training Live Events - Unbinding // Remove with .die() $(‘p’).die(); // .die() also accepts an event type $(‘p’).die(‘click’); // Namespace Example $(‘p’).die(‘click.one’); Copyright © 2010 appendTo, LLC. THE jOUERY COMPANY
  • 172. OSCON jQuery Training Live Events - Namespacing // .live() performs just like .bind() $(‘p’).live(‘click dblclick’, function(e){ if(e.type == ‘click’) { ... } }); // .live() can take namespaced events $(‘p’).live(‘click.one’,function(e) { alert(‘Click.one’); }); Copyright © 2010 appendTo, LLC. THE jOUERY COMPANY
  • 173. OSCON jQuery Training Live and delegate //1.4+ - live events can be given a context $("table").each(function(){ $("td", this).live("hover", function(){ $(this).toggleClass("hover"); }); }); //delegate is short hand method for this best //practice pattern $("table").delegate("td", "hover", function(){ $(this).toggleClass("hover"); }); Copyright © 2010 appendTo, LLC. THE jOUERY COMPANY
  • 174. OSCON jQuery Training Triggering Events // HTML <p>One</p> // Assign the event $(‘p’).live(‘click’,function() { alert(‘P Pressed’) }); // Trigger the event manually $(‘p’).trigger(‘click’); Copyright © 2010 appendTo, LLC. THE jOUERY COMPANY
  • 175. OSCON jQuery Training Triggering Events // HTML <p>One</p> // Assign the event $(‘p’).live(‘click’,function() { alert(‘P Pressed’) }); // Some Event types have shortcuts $(‘p’).click(); Copyright © 2010 appendTo, LLC. THE jOUERY COMPANY
  • 176. OSCON jQuery Training Event Parameters Copyright © 2010 appendTo, LLC. THE jOUERY COMPANY
  • 177. OSCON jQuery Training Event Data - Event Object // HTML <p>One</p> // Define the custom event var foo = ‘bar’; $(‘p’).bind(‘click’, {msg: foo}, function(evt){ alert(‘Parameter: ’+ evt.data.msg) } ); Copyright © 2010 appendTo, LLC. THE jOUERY COMPANY
  • 178. OSCON jQuery Training Questions? Copyright © 2010 appendTo, LLC. THE jOUERY COMPANY
  • 179. OSCON jQuery Training jQuery and Ajax Lesson 7 Copyright © 2010 appendTo, LLC. THE jOUERY COMPANY
  • 180. OSCON jQuery Training jQuery and Ajax ‣ Request Types ‣ Data Formats ‣ Request Callbacks ‣ Making a Request Copyright © 2010 appendTo, LLC. THE jOUERY COMPANY
  • 181. OSCON jQuery Training Request Types Copyright © 2010 appendTo, LLC. THE jOUERY COMPANY
  • 182. OSCON jQuery Training Request Types Core Method Shortcuts ‣ $.ajax(); ‣ $.get(); ‣ $.post(); ‣ $.getJSON(); ‣ $.getScript(); ‣ $( ... ).load(); Copyright © 2010 appendTo, LLC. THE jOUERY COMPANY
  • 183. OSCON jQuery Training Data Formats Copyright © 2010 appendTo, LLC. THE jOUERY COMPANY
  • 184. OSCON jQuery Training Data Formats ‣ xml Returned as DOM ‣ html Returned as String ‣ json Returned as Object ‣ jsonp Returned as Object ‣ text Returned as String ‣ script Evaluated & Returned as String Copyright © 2010 appendTo, LLC. THE jOUERY COMPANY
  • 185. OSCON jQuery Training Request Callbacks Copyright © 2010 appendTo, LLC. THE jOUERY COMPANY
  • 186. OSCON jQuery Training Request Callbacks ‣ success: function(data, status, XMLHttpRequest) { ... } ‣ error: function(XMLHttpRequest, textStatus, error) { ... } ‣ complete: function(XMLHttpRequest, status) { ... } Copyright © 2010 appendTo, LLC. THE jOUERY COMPANY
  • 187. OSCON jQuery Training Making a Request Copyright © 2010 appendTo, LLC. THE jOUERY COMPANY
  • 188. OSCON jQuery Training Making a Request $.get(‘page.php’, function(data) { $(data).appendTo(‘body’); }, ‘html’); var data = { fname: ‘Andrew’, lname: ‘Wirick’ }; $.post(‘page.php’, data, function(data) { $(data).appendTo(‘body’); }, ‘html’); Copyright © 2010 appendTo, LLC. THE jOUERY COMPANY
  • 189. OSCON jQuery Training Making a Request JSON // Response {“names”: [“Jonathan”, “Mike”, “Andrew”], “states”: {“NE” : “Nebraska”}, “year” : “2010” } $.getJSON(‘page.php’, function(json) { $(‘body’).append( json.names[0] ); $(‘body’).append( json.states.NE ); }); Copyright © 2010 appendTo, LLC. THE jOUERY COMPANY
  • 190. OSCON jQuery Training Making a Request JSON // Response { “names”: [“Jonathan”, “Mike”, “Andrew”] } $.getJSON(‘page.php’, function(json) { $.each(json.names, function(i, val) { $(‘body’).append( val ); }); }); Copyright © 2010 appendTo, LLC. THE jOUERY COMPANY
  • 191. OSCON jQuery Training Making a Request XML // Response <movies><movie id=”123”><title>Back to the future</ title></movie></movies> $.get(‘movies.php’, function(xml) { var title = $(xml) .find(‘movie[id=123] > title’) .text(); $(‘body’).append( title ); }, ‘xml’); Copyright © 2010 appendTo, LLC. THE jOUERY COMPANY
  • 192. OSCON jQuery Training Making a Request XML // Response <document><![CDATA[ <h1>Some data</h1> ]]></document> $.get(‘movies.php’, function(root) { var title = $(root) .find(‘document’) .text(); $(‘body’).append( title ); }, ‘xml’); Copyright © 2010 appendTo, LLC. THE jOUERY COMPANY
  • 193. OSCON jQuery Training Cross Domain Requests var url = ‘http://flickr.com...’; $.getJSON(url, function(json) { // Iterate the items and generate HTML }); Copyright © 2010 appendTo, LLC. THE jOUERY COMPANY
  • 194. OSCON jQuery Training Questions? Copyright © 2010 appendTo, LLC. THE jOUERY COMPANY
  • 195. OSCON jQuery Training Thank you for coming! http://appendTo.com @appendTo Copyright © 2010 appendTo, LLC. THE jOUERY COMPANY