JQuery Basics


JQuery Basics

The $ keyword

1. The $() function is an alias for the jQuery() function, and can be used to select DOM elements via selectors, or to create new DOM elements.

$(selector, context)

The first argument is a selector, this second argument(optional) denotes the context of the operation.

2. Serve as the namespace prefix for JQuery utility functions.

var trimmed = $.trim(someString) = jQuery.trim(someString);

Events

The document ready handler

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

The drawback of this approach is that it would wait until DOM tree is created, and until all external resources are fully loaded and the page is displayed in the browser window.

JQuery document ready handler

This would wait only until the document structure is fully parsed and the browser has converted the HTML into a DOM tree.

jQuery(document).ready(function() {..});

jQuery(function() {..});

$(function() {..});

jQuery(function($){alert('$ = '+ $);});


Binding event handlers

bind(eventType,data,handler), bind(eventMap), eventTypeName(listener)

one(eventType,data,listener) // one-short event

unbind(eventType,listener), unbind(event)

JQuery can group event handlers by assigning them to a namespace.

$('#thing1').bind('click.editMode',someListener);

$('*').unbind('click.editMode');

Proactively managing event handlers

JQuery allows us to seemingly proactively establish event handlers for elements that don’t even exist yet!

live(eventType,data,listener), die(eventType,listener)

Triggering event handlers

trigger(eventType,data), triggerHandler(eventType,data) // not propagation of event

eventName()

TOGGLING LISTENERS

toggle(listener1,listener2,...),hover(enterHandler,leaveHandler),hover(handler)

$('button.filterRemover').live('click',function(){

$(this).closest('div.filterItem').remove();

});

$('#addFilterButton').click();

Ajax with JQuery

load(url,parameters,callback) // Loading content

SERIALIZING FORM DATA

serializeArray(), serialize() // return formatted query string.

Making GET and POST requests

$.get(url,parameters,callback,type)

$.getJSON(url,parameters,callback)

$.post(url,parameters,callback,type)

$.ajax(options), $.ajaxSetup(options)

Energizing pages with animations and effects

hide|show|toggle|fadeIn|fadeOut|fadeTo|slideToggle(speed,callback), toggle(condition)

stop(clearQueue,gotoEnd) //Stopping animations

Creating custom animations

animate(properties,duration,easing,callback)

animate(properties,options)

Using other libraries with jQuery

$.noConflict(jqueryToo)

Once this function is executed, jQuery features will need to be invoked using the

jQuery identifier rather than the $ identifier.

This is implemented by at first store old $ before at first time JQuery function is called, on invocation of noConflict, revert to old $.

var $j = jQuery; // define our own shorter

(function($) { /* function body here */ })(jQuery);

Create an environment where the $ identifier is scoped to refer to the jQuery object, this is often used in JQuery plugins.

Create new DOM elements

$("p.appendToMe").append(someElement);

Manipulating element properties

attr(name,[value]), attr(attributes), removeAttr(name)

$("a[href^='http://']").attr("target","_blank"); // change link attribute: open all links in a new window

$("form").submit(function() {

$(":submit",this).attr("disabled", "disabled");

});

Storing custom data on elements

data(name,[value]), removeData(name)

Changing element styling

addClass|removeClass|toggleClass|hasClass(names)

Getting and setting styles

css(name,[value]), css(properties),width|height([value]), etc...

Setting element content

html|text([content]), append|prepend|before|after(content)

appendTo|prependTo|insertBefore|insertAfter(targets)

Wrapping and unwrapping elements

wrap|wrapAllwrapInner(wrapper), unwrap()

Changing elements

remove|detach(selector), empty()

clone(copyHandlers), replaceWith(content), replaceAll(selector)

Dealing with form element values

val([value]), val(values)

$('[name="radioGroup"]:checked').val()

JQuery utility functions

jQuery flags

$.fx.off—Enables or disabled effects

$.support—Details supported features

$.browser—Exposes browser details (officially deprecated)

$.trim(value)

$.each(container,callback), $.map(array,callback) //

$.grep(array,callback,invert)

$.inArray(value,array), $.makeArray(object), $.unique(array), $.merge(array1,array2)

Extending objects

$.extend(deep,target,source1,source2, ... sourceN)

Extends the object passed as target with the properties of the remaining passed objects.

Serializing parameter values

$.param(params,traditional)

Testing objects

$.isArray(o), $.isEmptyObject(o), $.isFunction(o), $.isPlainObject(o), $.isXMLDoc(node)

$.noop() // do nothing

$.contains(container,containee)

Tacking data onto elements

$.data(element,name,value), $.removeData(element,name)

$.parseJSON(json),

$.globalEval(code) // evaluate the passed JavaScript code in the global context.

Dynamically loading scripts

$.getScript(url,callback)

JQuery UI

Tabs

... content ...

... content ...

tabs(options)

Transforms tabset markup (as specified earlier in this section) into a set of UI tabs.

$("#tabset").tabs();

Dialog boxes

JavaScript built-in tools

alert and window.open()(create modeless dialog)

Example

$('

').addClass('confirm').appendTo(_canvas).dialog({

width:400,hide:'clip',autoOpen: false, modal: true

});

function _confirm(msg,title,callback){

$('#confirm').text(msg).dialog('option',

{

'title':title?title:'Confirm',

'buttons':{

'NO':function(){$(this).dialog('close');},

'YES':function(){

if(callback)callback();

$(this).dialog('close');

}

}

}

).dialog('open');

}

Create a form dialog

 var form=$('<form>').attr('title','Edit a product').addClass('form'). 
css('display','none'); 
$('<input>').attr({name:'productId',type:"hidden"}).appendTo(form); 
$('<div>').attr('for','productName').html('Name:').appendTo(form); 
$('<input>').attr({name:'productName'}).val('').appendTo(form); 
... 
form.dialog({ 
  autoOpen: false, 
  modal: true, 
  show: 'slide', 
  buttons: { 
    'Cancel':function(){ 
      $(this).dialog('close'); 
    }, 
    'Submit':function(){ 
      _submitEditProduct.call(_self); 
    } 
  } 
}) 
function _submitEditProduct(){ 
  var outer=this; 
  $.ajax({type: "POST",dataType:'json', data:{productId:productId}, 
    url:"controllers/EditProduct.php", 
    success:function(data){ 
      _alert(data.msg); 
      if(data.success) {//..} 
    }, 
    error:function(){//..} 
  }); 
} 
Resources

jQuery in Action, Second Edition

Labels

adsense (5) Algorithm (69) Algorithm Series (35) Android (7) ANT (6) bat (8) Big Data (7) Blogger (14) Bugs (6) Cache (5) Chrome (19) Code Example (29) Code Quality (7) Coding Skills (5) Database (7) Debug (16) Design (5) Dev Tips (63) Eclipse (32) Git (5) Google (33) Guava (7) How to (9) Http Client (8) IDE (7) Interview (88) J2EE (13) J2SE (49) Java (186) JavaScript (27) JSON (7) Learning code (9) Lesson Learned (6) Linux (26) Lucene-Solr (112) Mac (10) Maven (8) Network (9) Nutch2 (18) Performance (9) PowerShell (11) Problem Solving (11) Programmer Skills (6) regex (5) Scala (6) Security (9) Soft Skills (38) Spring (22) System Design (11) Testing (7) Text Mining (14) Tips (17) Tools (24) Troubleshooting (29) UIMA (9) Web Development (19) Windows (21) xml (5)