Loading...
Flash Player 9 (or above) is needed to view slideshows. We have detected that you do not have it on your computer.To install it, go here
Introduction to JQuery
Presentation at Denver Open Source Users\' Group and the Colorado Springs Open Source User\'s Group on JQuery
1528 views | comments | 3 favorites | 70 downloads | 1 embeds (Stats)
More Info
This slideshow is Public
Total Views: 1528 on Slideshare: 1501 from embeds: 27
Most viewed embeds (Top 5):
More
Slideshow Transcript
- Slide 1: JQuery
SCOTT RYAN
MAY 2008
SCOTT@THERYANSPLACE.COM
- Slide 2: Agenda
Web Development Introduction
JQuery Introduction
Selectors
Modifiers
Events
Animation
Ajax
Plugins
- Slide 3: Best Practices
Separation of Concerns
HTML – Layout
CSS – Look and Feel
JavaScript – Event Handling and Dynamic Behavior
Ajax – Remote access and dynamic data
- Slide 4: Why JQuery
Captures standard pattern
Select ,add or filter, manipulate, repeat
Unobtrusive JavaScript
Table Striping Example
- Slide 5: Table Striping (Dom Code)
var tables =
document.getElementsByTagName(\"table\");
for ( var t = 0; t < tables.length; t++ )
{
var rows = tables[t].getElementsByTagName(\"tr\");
for ( var i = 1; i < rows.length; i += 2 ) if ( !/(^|
s)odd(s|$)/.test( rows[i].className ) )
rows[i].className += \" odd\";
}
- Slide 6: Table Striping (Prototype)
$$(\"table\").each(function(table)
{
Selector.findChildElements(table, [\"tr\"])
.findAll(function(row,i){ return i % 2 == 1;
}) .invoke(\"addClassName\", \"odd\");
});
- Slide 7: Table Striping (jQuery)
$(\"tr:nth-child(odd)\").addClass(\"odd\");
- Slide 8: JQuery Wrapper
$(selector) or jQuery(selector)
Returns an array of Dom elements
Includes many methods
Example
$(“div.fademeout”).fadeOut();
Can be chained and always return a new array of
elements
Supports CSS selectors and custom selectors
- Slide 9: Document Ready Handler
$(document).ready(function(){});
$(function(){});
Runs when DOM is loaded
Cross Browser
Don’t need to wait for resources
- Slide 10: Extending JQuery
$.fn.samplefunc = function()
{
Return
this.each(
function(){code goes here});
}
$(‘#sample’).samplefunc().addClass(‘NewClass’);
- Slide 11: Other Libraries
jQuery.noConflict();
- Slide 12: Select
- Slide 13: Selectors
Generic
Element Name (a, p, img, tr, etc)
ID (#theId)
Class (.theclassname)
a#theId.theclassname
p a.theclassname
Parent – Child
ul.myList > li > a
- Slide 14: Positional Selectors
:first
:last
:first-child
:last-child
:only-child
:nth-child(2)
:nth-child(even)
- Slide 15: Special Selectors
:button :submit
:checkbox :selected
:checked :text
:contains(text string) :visible
:enabled
:disabled
:input
:hidden
- Slide 16: Managing the Wrapped Set
size
get(x)
index(element)
add(expression)
not(expression)
filter(expression)
Slice(begin, end)
- Slide 17: Selection Demo
$(‘#hibiscus’)
$(‘img[alt],img[title]’)
$('img[alt]').add('img[title]')
$('li > a')
$('li > a:first')
$(\"#aTextField\").attr(\"value\",\"test\")
$(‘input[type=text]’)
$(‘a[href$=.pdf]’)
$(‘div[title^=my]’)
- Slide 18: More Sample Selectors
$(‘li:has(a)’);
$(‘li a’);
- Slide 19: Create/Filter/Manipulate
- Slide 20: Creating HTML
$(“<div>Hello</div>”) or $(“<div>”)
$(“<div class=‘foo’>I have Foo</div><div>I
Don’t</div>”)
.filter(“.foo”)
.click(function(){alert (‘I am Foo’);})
.end()
.appendTo(“#somedivoutthere”);
- Slide 21: DOM Manipulation
Each accesses every element in the wrapped set
Attr get and set values
Can use json syntax
Attr(title:’test’, value:’yes’)
removeAttr
$(“a[href^http://]”).attr(“target”,”_blank”);
- Slide 22: More Manipulation
addClass append, appendTo
removeClass prepend, prependTo
toggleClass before,insertBefore
css(name,value) after, insertAfter
width,height, css wrap, wrapAll,wrapInner
hasClass, getClassNames remove
html, html(data) empty
text , text(data) replaceWith
(after.remove)
- Slide 23: Replacing Elements
$(‘#divToReplace’)
.replaceWith(‘<p>This is new Data</p>’)
.remove();
- Slide 24: Events and Event Model
Dom Level 0 Event Model
Single Events
Event Class (Proprietary)
Dom Level 2 Event Model
Multi Event
Event Class
Non IE
IE Event Model
Propagation (Bubble and Capture)
- Slide 25: JQuery Event Model
Unified Event Model
Unified Event Object
Supports Model 2 Semantics
Propagation
Cascade
Bubble
- Slide 26: Event Semantics
bind(eventType,data,listener)
eventTypeName(listener)
one(eventType, data,listener)
unbind(eventType, listener)
unbind(event)
trigger(eventType)
toggle(oddListener,evenListener)
- Slide 27: Simple Bind
$(function(){
$(‘#sample’)
.bind(‘click’,clickOne)
.bind(‘click’,clickTwo)
.bind(‘click’,clickThree)
.bind(‘mouseover’,mouse);
- Slide 28: Event Sample (Toggle/Inline)
$(function(){
$(‘#sample’).toggle(
function(event){
$(event.target).css(‘opacity’0.4);},
function(event){
$(event.target).css(‘opacity”,1.0;}
);
});
- Slide 29: Event Sample (Hover/External)
$(‘#sample’)
.bind(‘mouseover’ , report)
.bind(‘mouseout’ , report);
function report (event) {
$(‘#output’).append(‘<div>’+event.type+’</div>’);
}
$(‘#sample’).hover(report , report);
- Slide 30: Animation and Effects
show (speed, callback)
hide(speed, callback)
toggle(speed, callback)
Callback is a function that is passed a reference to this as the
calling element.
fadeIn, fadeOut, fadeTo
slideDown, slideUp, slideToggle
Custom animations
- Slide 31: JQuery Utility Functions
browser, box model, float style flags
trim
each
grep
inArray, makeArray, unique, extend
getScript
- Slide 32: Plugins
Complex extensions
Should be developed to work with other libraries
Custom Utility functions
Custom wrapped methods
Form, Dimensions, Live Query, UI, MarkitUp
Beware of the $ but not too timid
Naming jquery.pluginname.js
Parameter Tricks
- Slide 33: Ajax
load (url, parameters, callback)
serialize, serializeArray
get
getJSON
post
ajax