【jQuery类库】工具函数

工具函数

jQuery类库定义了不少工具函数(还有两个属性),在编写程序时挺有用。在下面的列表中你会发现,部分函数在ECMAScript(ES5)中已经有了等价形式。jQuery的函数比ES5早,并且可以工作在所有浏览器中。按照字母排序,将这些工具函数列举如下:

jQuery.browser

browser属性不是一个函数而是一个对象,可用于客户端嗅探。如果浏览器是IE,该对象会拥有一个msie属性,值为true。如果浏览器是Firefox或与其相关,会有一个值为true的mozilla属性。同样,在Safari和Chrome中,webkit属性为true;在Opera中,opera属性为true。除了与浏览器相关的属性,还有一个version属性,包含浏览器的版本号。尽量不要使用客户端嗅探,但是可以通过以下代码使用该属性来解决浏览器相关的bug:

if ($.browser.mozilla && parseInt($.browser.version) < 4) {
  // 在此解决一个假设的Firefox bug...
}

jQuery.contains()

该函数接受两个文档元素作为参数。如果第一个元素包含第二个元素,则返回true;否则返回false。

jQuery.each()

each()方法不同,each()方法只能遍历jQuery对象,而jQuery.each()工具函数可以遍历数组元素或对象属性。第一个参数是要遍历的数组或对象;第二个参数是要在每个数组元素或对象属性上调用的函数。该函数在调用时会带有两个参数:数组元素的序号或对象的属性名,以及数组元素的值或对象的属性值。函数中的this值和第二个参数是一样的。如果该函数返回fals,jQuery.each()会停止当前遍历并立刻返回。jQuery.each()总是返回第一个参数的值。

jQuery.each()会使用普通的for/in循环来遍历对象属性,所以会遍历所有可枚举的属性,包括继承的属性。jQuery.each()在遍历数组元素时,会以序号从小到大来遍历,不会跳过稀疏数组中的undefined属性。

jQuery.extend()

该函数接受对象作为参数。它会将第二个及其以后参数对象的属性复制到第一个参数对象中,如果同名的属性在第一个参数对象中已经存在,则会覆盖它。该函数会忽略任何值为undefined或null的属性。如果仅传入了一个对象,该对象的属性会被复制到jQuery对象自身中。该对象的返回值是属性被复制到的对象。如果一个参数的值为true,会执行深拷贝:第三个(及其以后)对象的属性会被复制到第二个对象上。

该函数用来复制对象以及合并带有几组默认值的选项对象时非常有用:

var clone = jQuery.extend({}, original);
var options = jQuery.extend({}, default_optinos, user_options);

jQuery.globalEval()

该函数会在全局上下文中执行JavaScript代码字符串,就像它是<script>元素的内容一样。(实际上,jQuery实现该函数时,就是通过创建一个<script>元素并临时把它插入文档中来实现的。)

jQuery.grep()

该函数和ES5中Array对象的filter()方法类似。它接受数组作为第一个参数,以及一个判断函数作为第二个参数,该判断函数会在数组的每一个元素上调用,调用时会传入元素值和元素序号作为参数。jQuery.grep()返回一个新数组,新数组由调用判断函数时返回true(或其他真值)的元素组成。如果给jQuery.grep()传入true作为第三个参数,则它会反转判断函数,返回的数组将会由判断函数调用时为false或其他假值的元素组成。

jQuery.inArray()

该函数和ES5中Array对象的indexOf()方法类似。它的第一个参数可以是任意值,第二个参数则是数组(或类数组对象),返回值是第一个参数值在数组中第一次出现的序号,如果该参数值不存在的话,则返回-1。

jQuery.isArray()

当参数是原生Array对象时,返回true。

jQuery.isEmptyObject()

当参数对象没有可枚举的属性时,返回true。

jQuery.isFunction()

当参数是原生Function对象时,返回true。注意,在IE8及以前版本中,window.alert()window.attachEvent()等浏览器方法返回false。

jQuery.isPlainObject()

如果参数是“纯”对象,而不是某些特定类型或类的对象的实例时,返回true。

jQuery.makeArray()

如果参数是类数组对象,该函数会将对象的属性复制到一个新的(真)数组中,并返回该数组。如果参数不是类数组对象,该函数会仅返回一个新数组,该数组只包含传入的参数一个元素。

jOuery.map()

该函数和ES5中Array对象的map()方法类似。它接受数组或类数组对象作为第一个参数;第二个参数则为映射函数。每一个数组元素与其序号都会传入这映射函数中,返回值就是由映射函数返回的值组成的新数组。jQuery.map()与ES5 map()方法存在两点不同。首先,如果映射函数返回的是null,该值不会被包含在返回的数组中。其次,如果映射函数返回的是数组,该数组的元素会被添加到结果数组中,而不是数组本身中。

jQuery.merge()

该函数接受两个数组或类数组对象。它会将第二个参数的元素添加到第一个上面,并返回第一个参数。第一个数组会修改,第二个不会。可以使用该函数来浅拷贝类数组对象:

var clone = jOuery.merge([], original);

jQuery.parseJSON()

该函数会解析JSON格式的字符串,返回解析结果。当传入的格式有误时,它会抛出异常。在定义它的浏览器中jQuery使用标准的JSON.parse()函数。注意jQuery只定义JSON解析函数,而没有定义JSON序列化函数。

jQuery.proxy()

该函数和ES5中Function对象的bind()方法类似。它接受函数作为第一个参数,对象作为第二个参数,并返回一个新函数,该函数会作为第二个参数对象的方法调用。它没有像bind()方法那样实现参数的部分应用。

jQuery.proxy()在调用时还可以传入对象作为第一个参数,传入属性名作为第二个参数。该名称代表的属性值应该是一个函数。通过这种方式调用,函数jQuery.proxy(o,n)的返回值与jQuery.proxy(o[n],o)—样。

jQuery.proxy()的目的是用来与jQuery的事件处理程序绑定机制一起使用。如果绑定了一个代理函数,可以使用原始函数来解除绑定它。

jQuery.support

这个属性类似jQuery.browser,它用来做可移植的特性探测,而不是脆弱的浏览器探测。jQuery.support的值是一个对象,该对象的属性都是布尔值,用来指明浏览器特性的存在情况。jQuery.support的绝大部分属性都是jQuery内部使用的底层特性。这可能会引起插件开发者的兴趣,但对应用开发者来说大部分都用途不大。一个例外是jQuery.support.boxModel: 当浏览器使用CSS标准的“context-box”模型时,该属性为true,而在IE6和IE7的怪异模式下时为false 。

JQuery.trim()

该函数和ES5中给字符串添加的trim()方法类似。它接受字符串作为唯一参数,返回的字符串开头和结尾处的空白字符都已移除。

上一篇:基于(System.Web.UI.Page)PageBase常用操作


下一篇:vmstat 命令