• 浏览器及特性检测

jQuery.support.boxModel

如果这个页面和浏览器是以 W3C CSS 盒式模型来渲染的,则等于 true。通常在 IE 6 和 IE 7 的怪癖模式中这个值是 false。在 document 准备就绪前,这个值是 null。

jQuery.support.cssFloat

如果用 cssFloat 来访问 CSS 的 float 的值,则返回 true。目前在 IE 中会返回 false,他用 styleFloat 代替。


  • 数组和对象操作

jQuery.each(object,callback)

注意传入的第一个参数可以是数组或者对象。如果数组,则遍历数组中的每一个对象。第一个参数表示索引,第二个参数表示值,this 表示当前遍历的元素,可以通过返回 false 终止迭代,比如下面的示例遍历到第二个元素后会终止:

  $.each(["a", "b", "c"], function(i, n)
{
alert("Item #" + i + ": " + n);//可以获取到 i 值
if (i >= 1)
{
return false;
}
});

如果传递的是对象,则遍历对象的每一个属性,即使函数返回 false 也依然会遍历完所有的属性,第一个参数表示属性 key(属性名称,是 obejct 类型),第二个参数表示值,this 表示当前属性的值:

 $("#iterateObject").click(function(event)
{
$.each({ name: "ziqiu.zhang", sex: "male", status: "single" }, function(i, n)
{
alert("Item #" + i.toString() + ": " + n ); //第一个参数 i 表示属性的 key(object), this 表示属性值
if (i >= 1)
{
return false;
}
});
});

特别注意 each 虽然迭代每一个元素或属性,但是在迭代函数中并不会改变当前元素的值,也就是无法改变返回后的对象。如果需要改变数组中的每一个元素并且将结果返回,因使用 jQuery.map(array,callback) 函数。

jQuery.grep(array,callback,[invert])

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

默认 invert 为 false,即过滤函数返回 true 为保留元素。如果设置 invert 为 true,则过滤函数返回 false 为删除元素。

下面的示例演示如何过滤数组中索引小于 0 的元素:

 $.grep( [0,1,2], function(n,i){
return n > 0;
});

返回的结果是[1,2]。

jQuery.map(array,callback)

说明:

将一个数组中的元素转换到另一个数组中。

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

讲解:

1.3.2 版本中此函数和 each 函数已经几乎相同(以前稍有不同),现在唯一的区别就是回调函数可以改变当前元素.返回 null 则删除当前元素。

下面是几个例子:

 var arr = [ "a", "b", "c", "d", "e" ]
$("div").text(arr.join(", "));//a,b,c,d,e arr = jQuery.map(arr, function(n, i){//函数参数前一位是数组值,后一位是下标
return (n.toUpperCase() + i);
});
$("p").text(arr.join(", "));//A0,B1,C2,D3,E4 arr = jQuery.map(arr, function (a) { return a + a; });
$("span").text(arr.join(", "));//aa,bb,cc,dd,ee

jQuery.extend([deep],target,object1,[objectN])

1.用一个或多个其他对象来扩展一个对象,返回被扩展的对象。

2.如果不指定 target,且只有一个object,则给 jQuery 命名空间本身进行扩展。如果有两个以上的object,则将第一个object作为target。如果指定target,将object依次往target覆盖。如下例:

 var empty = {}
var defaults = { validate: false, limit: 5, name: "foo" };
var options = { validate: true, name: "bar" };
var settings = jQuery.extend(empty, defaults, options);

结果:

 settings == { validate: true, limit: 5, name: "bar" }
empty == { validate: true, limit: 5, name: "bar" }
defaults == { validate: false, limit: 5, name: "foo" }

当不指定target时,

 var defaults = { validate: false, limit: 5, name: "foo" };
var options = { validate: true, name: "bar" };
var settings = jQuery.extend(defaults, options);

上面的代码将 defaults 作为 target 参数,虽然最后 settings 的结果一样,但是defaults 的值被改变了!

3.如果第一个参数设置为 true,则表示为深复制,递归地复制找到的任何对象。否则的话,副本会与原对象共享结构。

4.为定义的属性将不会被复制,然而从对象的原型继承的属性将会被复制。

 obj1 = { a : 'a', b : 'b' };
obj2 = { x : { xxx : 'xxx', yyy : 'yyy' }, y : 'y' };
$.extend(true, obj1, obj2);
alert(obj1.x.xxx); // 得到"xxx"
obj2.x.xxx = 'zzz'; //修改obj2对象属性的内联值,不影响合并后对象obj1
alert(obj2.x.xxx); // 得到"zzz"
alert(obj1.x.xxx); // 得到"xxx" //值保持;如果不加true,则得到“zzz”

$.extend(true, obj1, obj2)表示以obj2中的属性扩展对象obj1,第一个参数设为true表示深复制。

虽然obj1中原来没有"x"属性,但经过扩展后,obj1不但具有了"x"属性,而且对obj2中的"x"属性的修改也不会影响到obj1中"x"属性的值,这就是所谓的“深复制”了。

具体分为三种情况:

  1. 属性是数组时,则将target[name]初始化为空数组,然后递归调用extend;

  2. 属性是对象时,则将target[name]初始化为空对象,然后递归调用extend;

3. 否则,直接复制属性。

jQuery.makeArray(obj)

1. 将类数组对象转换为数组对象。

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

jQuery.inArray(value,array)

确定第一个参数在数组中的位置,从 0 开始计数(如果没有找到则返回 -1 )。

 var arr = [ 4, "Pete", 8, "John" ];
jQuery.inArray("John", arr); //
jQuery.inArray(4, arr); //
jQuery.inArray("David", arr); //-1

jQuery.merge(first,second)

1. 合并两个数组

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

jQuery.unique(array)

删除数组中重复元素。只处理删除 DOM 元素数组,而不能处理字符串或者数字数组。


  • 测试工具函数

测试工具函数主要用于判断对象是否是某一种类型,返回的都是 Boolean 值:

jQuery.isArray(obj)

jQuery.isFunction(obj)

同时别忘记了 javascript 中自带的 isNaN 和 isFinite:

 var test = "123";
alert(isNaN(test));
alert(isFinite(test));

isNaN 函数判断参数是否是非数字,如果是数字则返回 false。

isFinite 函数检查其参数是否是无穷大。如果参数是 NaN(非数字),或者是正、负无穷大的数,则返回 false.否则返回 true。


  • 字符处操作工具函数

jQuery.trim(str)

去掉字符串起始和结尾的空格。


  • Url 操作工具函数

jQuery.param(obj)

将表单元素数组或者对象序列化,是.serialize()的核心方法。

数组或 jQuery 对象会按照 name/value 对进行序列化,普通对象按照 key/value 对进行序列化。

 var params = { width:1680, height:1050 };
var str = jQuery.param(params);
$("#results").text(str);

结果:

width=1680&height=1050

4月13日学习笔记——jQuery工具函数的更多相关文章

  1. 4月13日学习笔记——jQuery动画

    基本动画函数 $("#divPop").show(); $("#divPop").hide(); $("#divPop").toggle() ...

  2. 4月12日学习笔记——jQuery事件

    下面是在 jQuery 中最常使用的 bind()方法举例:$("#testDiv4").bind("click", showMsg); 我们为 id 是 te ...

  3. 4月12日学习笔记——jQuery操作属性和样式

    区分 DOM 属性和元素属性 <img src="images/image.1.jpg" id="hibiscus" alt="Hibiscus ...

  4. 4月12日学习笔记——jQuery管理包装集

    创建新的元素 (1)使用 HTML DOM 创建元素 //使用 Dom 标准创建元素 var select = document.createElement("select"); ...

  5. 4月10日学习笔记——jQuery选择器

    概念 jQuery 是一套Javascript脚本库,注意 jQuery 是脚本库,而不是脚本框架."库"不等于"框架".jQuery 并不能帮助我们解决脚本的 ...

  6. jQuery源代码学习笔记_工具函数_noop/error/now/trim

    jQuery源代码学习笔记_工具函数_noop/error/now/trim jquery提供了一系列的工具函数,用于支持其运行,今天主要分析noop/error/now/trim这4个函数: 1.n ...

  7. 4月8日学习笔记(js基础)

    <script>标签放在<body>和<head> 放在 <head></head> 里的会比放在 <body></bod ...

  8. 4月1日学习笔记(CSS基础)

    CSS初始化 内边距padding padding属性宽度是按照上右下左的顺序来的,否则单独设置就是padding-left... 边框border border可以设置样式(border-style ...

  9. 3月31日学习笔记(HTML基础)

    HTML标签和元素概念区别 <p>是标签,<p>内容</p>是HTML元素. <pre></pre>定义预格式化文本,多用来显示源代码. 表 ...

随机推荐

  1. DropDownList的多级联动

    DropDownList的多级联动的问题最典型的案例就是实现省市级三级联动的案例,对这个问题的描述是当选中山东省之后,在选择市的下拉菜单时,市一栏只出现山东省下面的市.对于县也是同样的道理. 我也做的 ...

  2. 从零开始学JAVA(04)-连接数据库MSSQL(JDBC准备篇)

    在JAVA中可以使用JDBC连接数据库,不管是哪种数据库,首先必须下载驱动,包括Windows的MSSQL. 1.下载MSSQL的JDBC驱动,可以通过百度“Microsoft JDBC Driver ...

  3. iOS retain、strong、weak、assign

    iOS retain.strong.weak.assign strong与weak是由ARC新引入的对象变量属性xcode 4.2(ios sdk4.3和以下版本)和之前的版本使用的是retain和a ...

  4. Java SE --- 自增自减

    关于变量的自增与自减运算.   1) int b = a++,作用是将a的值先赋给b,然后再让a自增1.   2) int b = ++a,作用是将a的值先自增1,然后将自增后的结果赋给b. 直接上例 ...

  5. 数据结构【二】:简单阻塞队列BlockingQueue

    在POSIX多线程[一]:简单队列simple queue的基础上使用内部互斥锁和条件变量来控制并发以达到线程安全的目的,其主要用于 [生产者-消费者] 队列. 1.BlockingQueue初始化时 ...

  6. 【Android 界面效果34】Android里Service的bindService()和startService()混合使用深入分析

    .先讲讲怎么使用bindService()绑定服务 应用组件(客户端)可以调用bindService()绑定到一个service.Android系统之后调用service的onBind()方法,它返回 ...

  7. 【Mood-6】空气显示触摸屏、智能钱夹

    空气显示触摸屏 这款屏幕借助从设备中送出的空气和水在空中形成投影,可以用来展示计算机或平板中的图像.此外,它还可以实现人机互动.你只需在虚拟屏幕前挥动双手,就能完成一系列的隔空操作,如滑动.捏合.缩放 ...

  8. Swift - 使用NSNotificationCenter发送通知,接收通知

    转载自:http://www.mamicode.com/info-detail-1069228.html 标签: 1,通知(NSNotification)介绍 这里所说的通知不是指发给用户看的通知消息 ...

  9. 利用dex2jar反编译apk

    下载工具dex2jar和jd-gui ,解压 将要反编译的APK后缀名改为.rar或则 .zip,并解压,得到其中的额classes.dex文件(它就是java文件编译再通过dx工具打包而成的) 将获 ...

  10. Kinect For Windows V2开发日志五:使用OpenCV显示彩色图像及红外图像

    彩色图像 #include <iostream> #include <Kinect.h> #include <opencv2\highgui.hpp> using ...