1. jQuery.each(object, [callback]), 通用遍历方法,可用于遍历对象和数组

不同于遍历 jQuery 对象的 $().each() 方法,此方法可用于遍历任何对象。回调函数拥有两个参数:第一个为对象的成员或数组的索引,第二个为对应变量或内容。如果需要退出 each 循环可使回调函数返回 false,其它返回值将被忽略。

参数说明:

  • object:需要遍历的对象或数组。
  • callback:每个成员/元素执行的回调函数。
  1. //遍历数组
  2. $.each( [0,1,2], function(i, n){
  3. alert( "Item #" + i + ": " + n );
  4. });
  5.  
  6. //遍历对象
  7. $.each( { name: "John", lang: "JS" }, function(i, n){
  8. alert( "Name: " + i + ", Value: " + n );
  9. });

2. jQuery.extend([deep], target, object1, [objectN]), 用一个或多个其他对象来扩展一个对象,返回被扩展的对象

果不指定target,则给jQuery命名空间本身进行扩展。这有助于插件作者为jQuery增加新方法。 如果第一个参数设置为true,则jQuery返回一个深层次的副本,递归地复制找到的任何对象。否则的话,副本会与原对象共享结构。 未定义的属性将不会被复制,然而从对象的原型继承的属性将会被复制。

参数说明:

  • target,[object1],[objectN]

    • target:一个对象,如果附加的对象被传递给这个方法将那么它将接收新的属性,如果它是唯一的参数将扩展jQuery的命名空间。

    • object1:待合并到第一个对象的对象。

    • objectN:待合并到第一个对象的对象。

  • [deep],target,object1,[objectN]

    • deep:如果设为true,则递归合并。

    • target:待修改对象。

    • object1:待合并到第一个对象的对象。

    • objectN:待合并到第一个对象的对象。
  1. //合并 settings 和 options,修改并返回 settings
  2. var settings = { validate: false, limit: 5, name: "foo" };
  3. var options = { validate: true, name: "bar" };
  4. jQuery.extend(settings, options);
  5.  
  6. //返回结果
  7. settings == { validate: true, limit: 5, name: "bar" }
  8.  
  9. //合并 defaults 和 options, 不修改 defaults。
  10. var empty = {};
  11. var defaults = { validate: false, limit: 5, name: "foo" };
  12. var options = { validate: true, name: "bar" };
  13. var settings = jQuery.extend(empty, defaults, options);
  14. //返回结果
  15. settings == { validate: true, limit: 5, name: "bar" }
  16. empty == { validate: true, limit: 5, name: "bar" }

3. jQuery.grep(array, callback, [invert]), 使用过滤函数过滤数组元素

此函数至少传递两个参数:待过滤数组和过滤函数。过滤函数必须返回 true 以保留元素或 false 以删除元素。

参数说明:

  • array,callback,[invert]   Array,Function,Boolean

    • array:待过滤数组。

    • callback:此函数将处理数组每个元素。第一个参数为当前元素,第二个参数而元素索引值。此函数应返回一个布尔值。另外,此函数可设置为一个字符串,当设置为字符串时,将视为“lambda-form”(缩写形式?),其中 a 代表数组元素,i 代表元素索引值。如“a > 0”代表“function(a){ return a > 0; }”。

    • invert:如果 "invert" 为 false 或为设置,则函数返回数组中由过滤函数返回 true 的元素,当"invert" 为 true,则返回过滤函数中返回 false 的元素集。

  1. //过滤数组中小于 0 的元素。
  2. $.grep( [0,1,2], function(n,i){
  3. return n > 0;
  4. });
  5. //返回结果:[1, 2]
  6.  
  7. //排除数组中大于 0 的元素,使用第三个参数进行排除。
  8. $.grep( [0,1,2], function(n,i){
  9. return n > 0;
  10. }, true);
  11. //返回结果:[0]

4. jQuery.when(deferreds), 提供一种方法来执行一个或多个对象的回调函数,延迟对象通常表示异步事件

参数说明:

  • deferreds:一个或多个延时对象或JS对象

when()函数常常和done()函数、fail()函数、then()函数联合使用:

  • done(Function func) : 当deferreds中的处理都完成的时候执行Function回调函数
  • fail(Function func) :当deferreds中有一个处理失败的时候执行Function回调函数

  • then(Function func1,Function func2)-:结合了done和fail函数,当都成功执行func1,当有一个失败执行func2

  1. $.when( $.ajax("test.aspx") ).then(function(ajaxArgs){
  2. alert(ajaxArgs[1]); /* ajaxArgs is [ "success", statusText, jqXHR ] */
  3. });
  4.  
  5. $.when( { testing: 123 } ).done(
  6. function(x){ alert(x.testing); } /* alerts "123" */
  7. );
  8.  
  9. $.when($.ajax("/page1.php"), $.ajax("/page2.php")).done(function(a1, a2){
  10. /* a1 and a2 are arguments resolved for the
  11. page1 and page2 ajax requests, respectively */
  12. var jqXHR = a1[2]; /* arguments are [ "success", statusText, jqXHR ] */
  13. if ( /Whip It/.test(jqXHR.responseText) ) {
  14. alert("First page has 'Whip It' somewhere.");
  15. }
  16. });
  17.  
  18. $.when($.ajax("/page1.php"), $.ajax("/page2.php"))
  19. .then(myFunc, myFailure);

5. jQuery.makeArray(obj), 将类数组对象转换为数组对象

类数组对象有 length 属性,其成员索引为 0 至 length - 1。实际中此函数在 jQuery 中将自动使用而无需特意转换。

  1. <div>First</div><div>Second</div><div>Third</div><div>Fourth</div>
  2.  
  3. var arr = jQuery.makeArray(document.getElementsByTagName("div"));
  4. arr.reverse(); // 使用数组翻转函数
  5.  
  6. //结果
  7. Fourth
  8. Third
  9. Second
  10. First

6. jQuery.map(arr|obj,callback), 将一个数组中的元素转换到另一个数组中

作为参数的转换函数会为每个数组元素调用,而且会给这个转换函数传递一个表示被转换的元素作为参数。转换函数可以返回转换后的值、null(删除数组中的项目)或一个包含值的数组,并扩展至原始数组中。

参数说明:

  • array,callback

    • array:待转换数组。

    • callbackArray:为每个数组元素调用,而且会给这个转换函数传递一个表示被转换的元素作为参数。函数可返回任何值。另外,此函数可设置为一个字符串,当设置为字符串时,将视为“lambda-form”(缩写形式?),其中 a 代表数组元素。如“a * a”代表“function(a){ return a * a; }”。
  • arrayOrObject,callback

    • arrayOrObject:数组或者对象。

    • callback:为每个数组元素调用,而且会给这个转换函数传递一个表示被转换的元素作为参数。函数可返回任何值。另外,此函数可设置为一个字符串,当设置为字符串时,将视为“lambda-form”(缩写形式?),其中 a 代表数组元素。如“a * a”代表“function(a){ return a * a; }”。
  1. //将原数组中每个元素加 4 转换为一个新数组。
  2. $.map( [0,1,2], function(n){
  3. return n + 4;
  4. });
  5. //结果:[4, 5, 6]
  6.  
  7. //原数组中大于 0 的元素加 1 ,否则删除。
  8. $.map( [0,1,2], function(n){
  9. return n > 0 ? n + 1 : null;
  10. });
  11. //结果:[2, 3]
  12.  
  13. //原数组中每个元素扩展为一个包含其本身和其值加 1 的数组,并转换为一个新数组。
  14. $.map( [0,1,2], function(n){
  15. return [ n, n + 1 ];
  16. });
  17. //结果:[0, 1, 1, 2, 2, 3]

7. jQuery.inArray(value,array,[fromIndex]), 确定第一个参数在数组中的位置,从0开始计数(如果没有找到则返回 -1 )

参数说明:

  • value,array,[fromIndex]

    • value:用于在数组中查找是否存在
    • array:待处理数组
    • fromIndex:用来搜索数组队列,默认值为0
  1. var arr = [ 4, "Pete", 8, "John" ];
  2. jQuery.inArray("John", arr); //
  3. jQuery.inArray(4, arr); //
  4. jQuery.inArray("David", arr); //-1
  5. jQuery.inArray("Pete", arr, 2); //-1

8. jQuery.toArray(), 把jQuery集合中所有DOM元素恢复成一个数组

  1. alert($('li').toArray());

9. jQuery.merge(first,second), 合并两个数组

返回的结果会修改第一个数组的内容——第一个数组的元素后面跟着第二个数组的元素。要去除重复项,请使用$.unique()

参数说明:

  • first:第一个待处理数组,会改变其中的元素。

  • second:第二个待处理数组,不会改变其中的元素。

  1. $.merge( [0,1,2], [2,3,4] )
  2. //结果:[0,1,2,2,3,4]

10. jQuery.unique(array), 删除数组中重复元素

只处理删除DOM元素数组,而不能处理字符串或者数字数组。在jQuery 3.0以上版本该方法已被弃用,请使用 jQuery.uniqueSort()方法。

  1. //删除重复 div 标签
  2. $.unique(document.getElementsByTagName("div"));

11. jQuery.parseJSON(str), 接受一个JSON字符串,返回解析后的对象

在jQuery 3.0 及以后版本中,该方法已被删除,请使用原生方法 JSON.parse(str)。

传入一个畸形的JSON字符串会抛出一个异常,如:

  • {test: 1} ( test 没有包围双引号)
  • {'test': 1} (使用了单引号而不是双引号)

另外,如果你什么都不传入,或者一个空字符串、null或undefined,parseJSON都会返回 null

  1. var obj = jQuery.parseJSON('{"name":"John"}');
  2. alert( obj.name === "John" );

12. jQuery.parseXML(data), 解析一个字符串到一个XML文件

jQuery.parseXML使用原生解析函数浏览器创建一个有效的XML文档。这文档可以被传递给jQuery创建一个典型的jQuery对象,可以查询及操作

  1. //建一个jQuery对象使用一个XML字符串并得到标题节点的值
  2.  
  3. var xml = '<rss version="2.0"><channel><title>RSS Title</title></channel></rss>',
  4. xmlDoc = $.parseXML( xml ),
  5. $xml = $( xmlDoc ),
  6. $title = $xml.find( 'title' ); // append "RSS Title" to #someElement
  7. $( '#someElement' ).append( $title.text() ); // change the title to "XML Title"
  8. $title.text( 'XML Title' ); // append "XML Title" to #anotherElement
  9. $( '#anotherElement' ).append( $title.text() );

13. jQuery.noop, 一个空函数

当你仅仅想要传递一个空函数的时候,就用他吧。这对一些插件作者很有用,当插件提供了一个可选的回调函数接口,那么如果调用的时候没有传递这个回调函数,就用jQuery.noop来代替执行。

14. jQuery.proxy(function,context),  jQuery 1.4 新增。返回一个新函数,并且这个函数始终保持了特定的作用域

当有事件处理函数要附加到元素上,但他们的作用域实际是指向另一个对象时,这个方法最有用了。此外,最妙的是,jQuery能够确保即便你绑定的函数是经过jQuery.proxy()处理过的函数,你依然可以传递原先的函数来准确无误地取消绑定。

这个函数还有另一种用法,jQuery.proxy( scope, name )。第一个参数是要设定的作用域对象。第二个参数是将要设置作用域的函数名(必须是第一个作用域对象的一个属性)。

参数说明:

  • function,context   Function,Object

    • function:将要被改变作用域的函数

    • context:一个object,那个函数的作用域会被设置到这个object上来。
  • context,name  Object,Object
    • context:一个object,那个函数的作用域会被设置到这个object上来。
    • name:改变上下文中的函数名(这个函数必须是前一个参数 'context' 对象的属性)
  1. //强制设置函数的作用域,让this指向obj而不是#test对象。
  2.  
  3. <div id="test">Click Here!</div>
  4.  
  5. var obj = {
  6. name: "John",
  7. test: function() {
  8. alert( this.name );
  9. $("#test").unbind("click", obj.test);
  10. }
  11. };
  12.  
  13. $("#test").click( jQuery.proxy( obj, "test" ) );
  14.  
  15. // 以下代码跟上面那句是等价的:
  16. // $("#test").click( jQuery.proxy( obj.test, obj ) );
  17.  
  18. // 可以与单独执行下面这句做个比较。
  19. // $("#test").click( obj.test );

15. jQuery.contains(container,contained), 一个DOM节点是否包含另一个DOM节点

参数说明:

  • container:DOM元素作为容器,可以包含其他元素

  • contained:DOM节点,可能被其他元素所包含
  1. jQuery.contains(document.documentElement, document.body); // true
  2. jQuery.contains(document.body, document.documentElement); // false

16. jQuery.type(obj), 检测obj的数据类型

  1. jQuery.type(true) === "boolean"
  2.  
  3. jQuery.type(3) === "number"
  4.  
  5. jQuery.type("test") === "string"
  6.  
  7. jQuery.type(function(){}) === "function"
  8.  
  9. jQuery.type([]) === "array"
  10.  
  11. jQuery.type(new Date()) === "date"
  12.  
  13. jQuery.type(/test/) === "regexp"

17. jQuery.isEmptyObject(obj), 测试对象是否是空对象(不包含任何属性)

jQuery 1.4 新增。jQuery 1.4 中,这个方法既检测对象本身的属性,也检测从原型继承的属性(因此没有使用hasOwnProperty)。

  1. jQuery.isEmptyObject({}) // true
  2. jQuery.isEmptyObject({ foo: "bar" }) // false

18. jQuery.isPlainObject(obj), 测试对象是否是纯粹的对象(通过 "{}" 或者 "new Object" 创建的)

  1. jQuery.isPlainObject({}) // true
  2. jQuery.isPlainObject("test") // false

19. jQuery.isNumeric(value), 确定它的参数是否是一个数字

jQuery V1.7新增。

$.isNumeric() 方法检查它的参数是否代表一个数值。如果是这样,它返回 true。否则,它返回false。该参数可以是任何类型的

  1. $.isNumeric("-10"); // true
  2. $.isNumeric(16); // true
  3. $.isNumeric(0xFF); // true
  4. $.isNumeric("0xFF"); // true
  5. $.isNumeric("8e5"); // true (exponential notation string)
  6. $.isNumeric(3.1415); // true
  7. $.isNumeric(+10); // true
  8. $.isNumeric(0144); // true (octal integer literal)
  9. $.isNumeric(""); // false
  10. $.isNumeric({}); // false (empty object)
  11. $.isNumeric(NaN); // false
  12. $.isNumeric(null); // false
  13. $.isNumeric(true); // false
  14. $.isNumeric(Infinity); // false
  15. $.isNumeric(undefined); // false

20. jQuery.trim(str), 去掉字符串起始和结尾的空格

  1. $.trim(" hello, how are you? ");

21. jQuery.param(obj,[traditional]), 将表单元素数组或者对象序列化。是.serialize()的核心方法

在jQuery 1.3中,如果传递的参数是一个函数,那么用.param()会得到这个函数的返回值,而不是把这个函数作为一个字符串来返回。

在jQuery 1.4中,.param()会深度递归一个对象来满足现在脚本语言和框架,比如PHP, Ruby on Rails等。你可以通过jQuery.ajaxSettings.traditional = true; 来全局得禁用这个功能。

注意:因为有些框架在解析序列化数字的时候能力有限,所以当传递一些含有嵌套对象、数组的对象作为参数时,请务必小心!

在jQuery 1.4中,HTML5的input元素也会被序列化。

参数说明:

  • obj  Array<Elements>/jQuery/Object

    • 数组或jQuery对象会按照name/value对进行序列化,普通对象按照key/value对进行序列化
  • obj,[traditional]  Array<Elements>/jQuery/Object,Boolean
    • obj:数组或jQuery对象会按照name/value对进行序列化,普通对象按照key/value对进行序列化。

    • traditional:是否使用传统的方式浅层序列化。
  1. var params = { width:1680, height:1050 };
  2. var str = jQuery.param(params);
  3. $("#results").text(str);
  4.  
  5. //width=1680&height=1050

22. jQuery.error(message), 接受一个字符串,并且直接抛出一个包含这个字符串的异常

这个方法的主要目的是提供给插件开发人员,让他们可以重载这个方法,并以更好的方式显示错误,或者提供更多信息。

23. $.fn.jquery, 代表 jQuery 版本号的字符串

.jquery 属性是通过 jQuery 原型赋值的,通过使用它的别名 $.fn 进行引用。它是一个含有 jQuery 版本号的字符串,例如 "1.5.0" 或 "1.4.4".

  1. //判断一个对象是否是 jQuery 对象。
  2. var a = { what: "A regular JS object" },
  3. b = $('body');
  4. if ( a.jquery ) { // falsy, since it's undefined
  5. alert(' a is a jQuery object! ');
  6. } if ( b.jquery ) { // truthy, since it's a string
  7. alert(' b is a jQuery object! ');
  8. }
  9.  
  10. //取得页面上当前使用的 jQuery 的版本号。
  11. alert( 'You are running jQuery version: ' + $.fn.jquery );

jQuery中的工具(十)的更多相关文章

  1. JQuery中的工具类(五)

    一:1.serialize()序列表表格内容为字符串.返回值jQuery示例序列表表格内容为字符串,用于 Ajax 请求. HTML 代码:<p id="results"&g ...

  2. jquery-12 jquery中的工具方法有哪些

    jquery-12 jquery中的工具方法有哪些 一.总结 一句话总结:四个较常用方法.1.isArray();2.isFunction();3.isEmptyObejct();4.trim(); ...

  3. JQuery中的工具函数总结

    前提引入 前提当然也是要引入Jquery啦... <script src="http://libs.baidu.com/jquery/1.9.0/jquery.js" typ ...

  4. jquery中的工具方法$.isFunction, $.isArray(), $.isWindow()

    本文正式地址:http://www.xiabingbao.com/jquery/2015/07/25/jquery-judge-type 在javascript中对变量类型的判断中,我们讲解了了jqu ...

  5. jQuery中的工具和插件

    jQuery的工具属性 jQuery类数组操作 length属性 表示获取类数组中元素的个数 get()方法 表示获取类数组中单个元素"括号中填写该元素的索引值" index()方 ...

  6. jquery中的工具函数 Utilities

    noConflict(deep) 释放$和Jquery的控制权 isFunction(obj) isArray(obj) isWindow(obj) isNumeric(obj) type(obj) ...

  7. 1. jQuery中的DOM操作

    1)查找节点 通过jQuery选择器来完成 2)创建节点 创建元素节点:var newTd = $("<td></td>") 创建文本节点:在创建元素节点时 ...

  8. jQuery系列(十四):jQuery中的ajax

    1.什么是ajax AJAX = 异步的javascript和XML(Asynchronous Javascript and XML) 简言之,在不重载整个网页的情况下,AJAX通过后台加载数据,并在 ...

  9. [转载]Jquery中$.get(),$.post(),$.ajax(),$.getJSON()的用法总结

    本文对Jquery中$.get(),$.post(),$.ajax(),$.getJSON()的用法进行了详细的总结,需要的朋友可以参考下,希望对大家有所帮助. 详细解读Jquery各Ajax函数: ...

随机推荐

  1. mysql五大引擎的区别和优劣之分

    数据库引擎介绍 MySQL数据库引擎取决于MySQL在安装的时候是如何被编译的.要添加一个新的引擎,就必须重新编译MYSQL.在缺省情况下,MYSQL支持三个引擎:ISAM.MYISAM和HEAP.另 ...

  2. LG2145 「JSOI2007」祖码 区间DP

    问题描述 LG2145 题解 把颜色相同的一段看做一个点. 然后类似于合唱队区间DP即可. 但是这题好像出过一些情况,导致我包括题解区所有人需要特判最后一个点. \(\mathrm{Code}\) # ...

  3. spring cloud 2.x版本 Hystrix Dashboard断路器教程

    前言 本文采用Spring cloud本文为2.1.8RELEASE,version=Greenwich.SR3 本文基于前两篇文章eureka-server.eureka-client.eureka ...

  4. ARM64 的 memcpy 优化与实现

    参考:https://www.byteisland.com/arm64-%E7%9A%84-memcpy-%E6%B1%87%E7%BC%96%E5%88%86%E6%9E%90/ libc/stri ...

  5. mysql 数据库分表小实例

    项目开发中,我们的数据库数据越来越大,随之而来的是单个表中数据太多.以至于查询书读变慢,而且由于表的锁机制导致应用操作也搜到严重影响,出现了数据库性能瓶颈. 当出现这种情况时,我们可以考虑分表,即将单 ...

  6. 投色子--html demo

    这是之前客户想要看的一个效果,不知道放在博客里面有没有关系,当做备份吧. <!DOCTYPE HTML> <html> <head> <meta charse ...

  7. 数据库-表操作(CRUD)

    1.数据增删改 2.单表查询 3.正则表达式 4.多表查询 ​ 笛卡尔积 ​ 内连接 ​ 外链接 ​ 子查询 一.数据的增删改 为什么不说查 因为查询语句 有很多细节 所以先从简单的说起 添加数据: ...

  8. CAD打印图纸要怎么操作?简单方法分享给你

    大家日常生活中多多少少的都接触到过CAD文件,CAD图是借助CAD制图软件来进行绘制完成的.唯一的困惑就是CAD图纸的格式大多数均为dwg格式的,查看起来不是那么的方便?所以很多设计师们都会选择将图纸 ...

  9. SpringCloud之API网关与服务发现——Cloud核心组件实战入门及原理

    微服务发展历史 单体模式——>服务治理(服务拆分)——>微服务(细分服务)——>Segments(服务网格) 微服务 VS SOA 微服务:模块化.独立部署.异构化 SOA:共同的治 ...

  10. angular版聊天室|仿微信界面IM聊天|NG2+Node聊天实例

    一.项目介绍 运用angular+angular-cli+angular-router+ngrx/store+rxjs+webpack+node+wcPop等技术实现开发的仿微信angular版聊天室 ...