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()

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,185评论 6 503
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,652评论 3 393
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 163,524评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,339评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,387评论 6 391
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,287评论 1 301
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,130评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,985评论 0 275
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,420评论 1 313
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,617评论 3 334
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,779评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,477评论 5 345
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,088评论 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,716评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,857评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,876评论 2 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,700评论 2 354

推荐阅读更多精彩内容