9 Beyond the DOM with jQuery utility functions

This chapter covers

  • The jQuery properties
  • Avoiding conflict between jQuery and other libraries
  • Array manipulation functions
  • Extending and merging objects
  • Parsing different formats
  • Dynamically loading new scripts

9.1 Using the jQuery properties

9.1.1 Disabling animations

9.1.2 Changing the animations rate


$.fx.interval = 100;


9.1.3 The $.support property

9.2 Using other libraries with jQuery


$.noConflict(jqueryPropertyToo)
Parameters
jqueryPropertyToo (Boolean)
Returns
jQuery

var $j = jQuery;

window.$new = $.noConflict(true);
$new('p').find('a');

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

$ = 'Hello world!';
try {
  $('#button-test').on('click', function(){
    alert('$ is an alias for jQuery');
  });
} catch (ex) {
  alert('$ has been replaced. The value is "' + $ + '"')
}

try {
  (function($) {
    $('#button-test').on('click', function() {
      alert('$ is an alias for jQuery'); 
    });
  })(jQuery);
} catch (ex) {}


9.3 Manipulating JavaScript objects and collections

9.3.1 Trimming strings


$.trim(value)
Parameters
value (String)
Returns
The trimmed string.

var trimmedString = $.trim($('#some-field').val());

9.3.2 Iterating through properties and collections


var anArray = ['one', 'two', 'three'];
for (var i = 0; i < anArray.length; i++) {
 // Do something here with anArray[i]
}
var anObject = {one: 1, two: 2, three: 3};
for (var prop in anObject) {
 // Do something here with prop
}

$.each(collection, callback)
Parameters
collection (Array|Object)
callback (Function)
Returns
The same collection passed.

var anArray = ['one', 'two', 'three'];
$.each(anArray, function(i, value) {
 // Do something here
});
var anObject = {one:1, two:2, three:3};
$.each(anObject, function(name, value) {
 // Do something here
});
var $divs = $('div');
for(var element of $divs) {
  // Do something with element
}

9.3.3 Filtering arrays


$.grep(array, callback[, invert])
Parameters
array (Array)
callback (Function)
inver (Boolean)
Returns
The array of collected values.

var bigNumbers = $.grep(originalArray, function(value) {
    return value > 100;
});
var badZips = $.grep(
 originalArray,
 function(value) {
 return value.match(/^\d{5}(-\d{4})?$/) !== null;
 },
 true
 );

9.3.4 Translating arrays


$.map(collection, callback)
Parameters
collection (Array|Object)
callback (Function)
Returns
The array of collected values

var oneBased = $.map(
 [0, 1, 2, 3, 4],
 function(value) {
 return value + 1;
 }
);
var strings = ['1', '2', '3', '4', 'S', '6'];
var values = $.map(strings, function(value) {
 var result = new Number(value);
 return isNaN(result) ? null : result;
});
var characters = $.map(
 ['this', 'that'],
 function(value) {
 return value.split('');
 }
);

9.3.5 More fun with JavaScript arrays


$.inArray(value, array[, fromIndex])
Parameters
value (Any)
array (Array)
fromIndex (Number)
Returns
The index of the first occurence of the value within the array, or -1 if the value isn't found.

var index = $.inArray(2, [1, 2, 3, 4, 5]);

$.makeArray(object)
Parameters
object (Object)
Returns
The resulting Javascript array

function foo(a, b) {
  var sortedArgs = $.makeArray(arguments).sort();
}

$.unique(array)
Parameters
array (Array)
Returns
An array of DOM elements returned in document order, consisting of the unique elements in the passed array.


$.merge(array1, array2)
Parameters
array1 (Array)
array2 (Array)
Returns
The first array, modified with the results of the merge.

var arr1 = [1, 2, 3, 4, 5];
var arr2 = [5, 6, 7, 8, 9];
var arr3 = $.merge(arr1, arr2);

9.3.6 Extending objects


$.extend([deep,] target, [source1, source2, ... sourceN])
Parameters
deep (Boolean)
target (Object)
source1 ... (Object)
sourceN
Returns
The extended target object.

var target = {a: 1, b: 2, c: 3};
var source1 = {c: 4, d: 5, e: 6};
var source2 = {c: 7, e: 8, f: 9};
$.extend(target, source1, source2);
target (after) = {a: 1, b: 2, c: 7, d: 5, e: 8, f: 9}
var mergeObject = $.extend({}, object1, object2);
var target = {a: 1, b: 2};
var source1 = {b: {foo: 'bar'}, c: 3};
var source2 = {b: {hello: 'world'}, d: 4};
$.extend(true, target, source1, source2)
target (after) = {a: 1, b: {foo: bar, hello: world}, c: 3,d: 4}

9.3.7 Serializing parameter values


$.param(params[, traditional])
Parameters
params (Array|jQuery|Object)
traditional (Boolean)
Returns
The formatted query string.

$.param($('input'));

9.3.8 Testing objects


jQuery utility functions for testing objects

Function Description
$.isArray(param)
$.isEmptyObject(param)
$.isFunction(param)
$.isNumberic(param)
$.isPlainObject(param)
$.isWindow(param)
$.isXMLDoc(param)
multiplier(collection[, factor][, customFunction])

$.type(param)
Parameters
param (Any)
Returns
A string describing the type of the value

$.type(3);
'number'
$.type([1, 2, 3]);
'array'
if (typeof [1, 2, 3] === 'array') 
typeof [1, 2, 3] is 'object'

9.3.9 Parsing functions


$.parseJSON(json)
Parameters
json (String)
Returns
The evaluation of the JSON string


$.parseXML(xml)
Parameters
xml (String)
Returns
The XML document derived from the string.


$.parseHTML(html[, context][, keepScripts])
Parameters
html (String)
context (Element)
keepScripts (Boolean)
Returns
An array of DOM elements derived from the string.


9.4 Miscellaneous utility functions

9.4.1 Doing nothing


$.noop()
Parameters
none
Returns
undefined


9.4.2 Testing for containment


$.contains(container, contained)
Parameters
container (Element)
contained (Element)
Returns
true if the contained element is contained within the container; false otherwise.

console.log($.contains(
 document.getElementById('wrapper'),
 document.getElementById('description')
));
console.log($.contains(
 document.getElementById('empty'),
 document.getElementById('description')
));

9.4.3 Prebinding function contexts


$.proxy(function, proxy[, argument, ..., argument])
$.proxy(proxy, property[, argument, ..., argument])
Parameters
function (Function)
proxy (Object)
argument (Any)
property (String)
Returns
The new function whose context is set to the proxy object.

$(whatever).click(obj.hello);
$(whatever).click($.proxy(obj.hello, obj));
$(whatever).click($.proxy(obj, 'hello'));

9.4.4


$.globalEval(code)
Parameters
code (String)
Returns
The evaluation of the javaScript code.


9.4.5 Throwing exceptions


*** $.error(string)***
Parameters
string (String)
Returns
undefined

function isPrime(number) {
  if(typeof number !== 'number') {
    $.error('The argument provided is not a number');
  }
  // Remaining code here...
}

9.5 Summary


$.fx.off
$.fx.interval
$.noConflict()
$.each()
$.grep()
$.map()
$.inArray()
$.isArray()
$.isFunction()
$.type()
$.parseJSON()
$.parseXML()
$.parseHTML()
$.extend()
$.proxy()

你可能感兴趣的:(9 Beyond the DOM with jQuery utility functions)