jQuery提供了很多以$为命名空间的工具方法(utility function)。这些方法都是不具体操作结果集(wrapped set)或是非面向对象的,其实就是一些全局的方法。
具体的方法用法参考jQuery API在线查看器 ,这里就只是简单的列一下好了:
- 浏览器和特性探测
- $.browser.xx(可选值为safari/opera/msie/mozilla)布尔型,是否为特定的浏览器
- $.boxModel 布尔型,true为w3c 标准box model,false为ie box model
- $.support 可以查看更多的浏览器特性,具体看文档
- 字符串方法
- $.trim(str)
- $.param(obj) 将form元素数组或对象序列化成url参数
- 数组与对象
- $.merge(first,second)合并数组,在first中添加second中的元素,并返回first
- $.unique(array)array中的元素去重,array中的元素仅限dom元素,不能是数字和字符串
- $.grep(array,callback,invert)用callback方法过滤数组元素
- $.map(array,callback)用callback方法将数组元素逐个处理
- $.each(object,callback) 遍历执行object中的元素,执行callback
- $.extend(deep,target,object1,…,objectN) 和prototype.js类似的extend对象机制
- $.inArray(value,array) $.isArray(obj) $.isFunction(obj)看名字就知道什么意思了
- 脚本加载
- $.getScript(url,callback)加载url制定脚本后执行callback,加载的脚本会被执行
值得说明的几处:
jQuery in Action中介绍的$.map和$.grep中callback是可以为字符串类型,以实现类似lambda形式的操作,在jQuery的1.2.3版本中由于要兼容Adobe AIR已经被去掉了,书中的写法“$.grep(originalArray,'a>100');”已经不能使用了。
看到书中的小标题 - "Will the real $ please stand up?” - 时不禁一笑(让我想起了我酷爱的Eminem的The Real Slim Shady 中的歌词“Will the real Slim Shady please stand up”)。这个$的冲突问题以前在第一章的时候说过,如果jQuery要和其他框架联合使用,很有可能$会冲突。之前介绍了通过使用jQuery.noConflict()解决问题.但还是有如下的情况,某段由jQuery写的代码被移植到一个页面,而这个页面也用了prototype.js,所以需要jQuery.noConflict()调用,然后把那段移植代码中的$符号都换成jQuery,如果万一少替换了几处,就很可能会导致代码有问题,还是有一点儿让人烦躁了吧。其实可以用书中介绍的技巧来解决这个问题:
(function($){ // // Plugin definition or your jquery code goes here // })(jQuery);
先声明一个方法,然后传入jQuery做参数,在函数体内$就可以用来表示jQuery了,不会和函数体外面产生冲突,上面提到的移植代码只要由这个包装一下就不需要替换了,实际上jQuery的插件定义也都应该用这种形式,很妙的技巧。

