jQuery,工具函数

学习要点:

  1.字符串操作

  2.数组和对象操作

  3.测试操作

  4.URL 操作

  5.浏览器检测

  6.其他操作

工具函数是指直接依附于 jQuery 对象,针对 jQuery 对象本身定义的方法,即全局性 的函数。它的作用主要是提供比如字符串、数组、对象等操作方面的遍历。

一.字符串操作

在 jQuery 中,字符串的工具函数只有一个,就是去除字符串左右空格的工具函数:

trim()去掉字符串两边空格

    var str = '          jQuery ';
alert(str);
alert($.trim(str)); //trim()去掉字符串两边空格

 each()遍历数组和对象,两个参数,参数1是要遍历的对象或者数组,参数2是匿名函数,函数里也有两个形式参数见下列

each()遍历数组,参数1是要遍历的数组,参数2是匿名函数,函数有两个形式参数index, value,分别接收数组的下标和值

    var arr = ['张三', '李四', '王五', '马六'];
$.each(arr, function (index, value) {
$('#box').html($('#box').html() + index + '.' + value + '<br />');
});

each()遍历对象,参数1是要遍历的对象,参数2是匿名函数,函数有两个形式参数name, fn,分别接收对象的键和值

    var ojp = {a:1,b:2,c:3};
$.each(ojp, function (name, fn) {
$('#box').html($('#box').html() + name + ':' + fn + '<br /><br />');
})

注意:$.each()中 index 表示数组元素的编号,默认从 0 开始。

grep()数组数据筛选,返回筛选后的数组,两个参数,参数1要筛选的数组,参数2是匿名函数,函数有两个形式参数element, index,分别接收数组的值和下标

    var arr = [5, 2, 9, 4, 11, 57, 89, 1, 23, 8];
var arrGrep = $.grep(arr, function (element, index) {
return element < 6 && index < 5; //返回值小于6并且下标小于5的
});
alert(arrGrep);

注意:$.grep()方法的 index 是从 0 开始计算的。

map()修改数组数据,返回修改后的数组,两个参数,参数1要修改的数组,参数2是匿名函数,函数有两个形式参数element, index,分别接收数组的值和下标

    var arr = [5, 2, 9, 4, 11, 57, 89, 1, 23, 8];
var arrMap = $.map(arr, function (element, index) {
if (element < 6 && index < 5) { //判断值小于6并且下标小于5的
return element + 1; //值小于6并且下标小于5的加1
}
});
alert(arrMap);

inArray()查找到指定元素的下标,返回下标,两个参数,参数1要查找的指定元素,参数2要查找的数组

    var arr = [5, 2, 9, 4, 11, 57, 89, 1, 23, 8];
var arrInArray = $.inArray(1, arr); //查找元素1的下标是多少
alert(arrInArray);

注意:$.inArray()的下标从 0 开始计算。

merge()合并两个数组,返回一个数组,有两个参数,参数1是数组1,参数2是数组2

    var arr = [5, 2, 9, 4, 11, 57, 89, 1, 23, 8];
var arr2 = [23, 2, 89, 3, 6, 7];
alert($.merge(arr, arr2));

unique()删除重复的 DOM 元素,参数是要删除重复的DOM 元素数组

<div></div>
<div></div>
<div class="box"></div>
<div class="box"></div>
<div class="box"></div>
<div></div>
    var divs = $('div').get();  //将所有div转换成原生态数组
divs = divs.concat($('.box').get()); //将class为box的元素添加到数组
alert($(divs).size()); //查看数组长度
$.unique(divs); //删除重复的div
alert($(divs).size()); //查看数组长度

toArray()合并多个 DOM 元素组成数组,参数是要组合数组的节点对象集合

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

三.测试操作

在 jQuery 中,数据有着各种类型和状态。有时,我们希望能通过判断数据的类型和状 态做相应的操作。jQuery 提供了五组测试用的工具函数。

isArray(obj) 判断是否为数组对象,是返回 true

    //判断是否为数组对象
var arr = [1, 2, 3];
alert($.isArray(arr));

isFunction(obj) 判断是否为函数,是返回 true

//判断是否为函数
var fn = function () {};
alert($.isFunction(fn));

isEmptyObject(obj) 判断是否为空对象,是返回 true

//判断是否为空对象
var obj = {};
alert($.isEmptyObject(obj));

isPlainObjet(obj) 判断是否为纯粹对象,是返回 true

//判断是否由{}或 new Object()创造出的对象
var obj = window;
alert($.isPlainObject(obj));

注意:如果使用 new Object('name');传递参数后,返回类型已不是 Object,而是字符串, 所以就不是纯粹的原始对象了。

contains(obj) 判断 DOM 节点是否含另一个 DOM 节点,是返回 true

    //contains(obj) 判断 DOM 节点是否含另一个 DOM 节点,是返回 true
alert($.contains($('#box').get(0), $('#pox').get(0)));
//判断#pox节点是否在#box里面

type(data) 判断数据类型

//$.type()检测数据类型
alert($.type(window));

isNumeric(data) 判断数据是否为数值

//$.isNumeric 检测数据是否为数值
alert($.isNumeric(5.25));

isWindow(data) 判断数据是否为 window 对象

//$.isWindow 检测数据对象是否为 window 对象
alert($.isWindow(window));

四.URL 操作

URL 地址操作,在之前的 Ajax 章节其实已经讲到过。只有一个方法:$.param(),将对 象的键值对转化为 URL 键值对字符串形式。

param()将对象键值对转换为 URL 字符串键值对,参数是要转换的对象

//$.param()将对象键值对转换为 URL 字符串键值对
var obj = {
name: 'Lee',
age: 100
};
alert($.param(obj));

五.浏览器检测

由于在早期的浏览器中,分 IE 和 W3C 浏览器。而 IE678 使用的覆盖率还很高,所以, 早期的 jQuery 提供了$.browser 工具对象。而现在的 jQuery 已经废弃删除了这个工具对象, 如果还想使用这个对象来获取浏览器版本型号的信息,可以使用兼容插件。

 browser 对象属性,浏览器检测,已经删除,如果要使用必须引入jquery-migrate-1.2.1.js文件向下兼容

$.browser 对象属性

webkit 判断(谷歌) webkit 浏览器,如果是则为 true
mozilla 判断(火狐) mozilla 浏览器,如果是则为 true
safari 判断 safari 浏览器,如果是则为 true
opera 判断 opera 浏览器,如果是则为 true
msie 判断(IE) IE 浏览器,如果是则为 true
version 获取浏览器版本号

//获取火狐浏览器和版本号
alert($.browser.mozilla + ':' + $.browser.version);

注意:火狐采用的是 mozilla 引擎,一般就是指火狐;而谷歌 Chrome 采用的引擎是 webkit,一般验证 Chrome 就用 webkit。

还有一种浏览器检测,是对浏览器内容的检测。比如:W3C 的透明度为 opacity,而 IE 的透明度为 alpha。这个对象是$.support。

support 对象部分属性,浏览器内容的检测

hrefNormalized
如果浏览器从 getAttribute("href")返回的是原封不动的结果,则返回 true。在 IE 中会返回 false,因为他
的 URLs 已经常规化了

htmlSerialize
如果浏览器通过 innerHTML 插入链接元素的时候会序列化这些链接,则返回 true,目前 IE 中返回 false

leadingWhitespace
如果在使用 innerHTML 的时候浏览器会保持前导空白字符,则返回 true,目前在 IE 6-8 中返回 false

objectAll
如 果 在 某 个 元 素 对 象 上 执 行getElementsByTagName("*")会返回所有子孙元素,则为true,目前在 IE 7 中为 false

opacity
如果浏览器能适当解释透明度样式属性,则返回 true,目前在 IE 中返回 false,因为他用 alpha 滤镜代替

scriptEval
使用 appendChild/createTextNode 方法插入脚本代码时,浏览器是否执行脚本,目前在 IE 中返回 false,IE使用 .text 方法插入脚本代码以执行

style
如果 getAttribute("style")返回元素的行内样式,则为 true。目前 IE 中为 false,因为他用 cssText 代替

tbody
如果浏览器允许 table 元素不包含 tbody 元素,则返回true。目前在 IE 中会返回 false,他会自动插入缺失的tbody

Ajax
如果浏览器支持 ajax 操作,返回 true

//$.support.ajax 判断是否能创建 ajax
alert($.support.ajax);
//$.support.opacity 设置不同浏览器的透明度
if ($.support.opacity == true) {
  $('#box').css('opacity', '0.5');
} else {
  $('#box').css('filter', 'alpha(opacity=50)');
}

注意:由于 jQuery 越来越放弃低端的浏览器,所以检测功能在未来使用频率也越来越 低。所以,$.brower 已被废弃删除,而$.support.boxModel 检测 W3C 或 IE 盒子也被删除。 并且 http://api.jquery.com/jQuery.support/官网也不提供属性列表和解释,给出一个 Modernizr 第三方小工具来辅组检测。

六.其他操作

jQuery 提供了一个预备绑定函数上下文的工具函数:$.proxy()。这个方法,可以解决诸 如外部事件触发调用对象方法时 this 的指向问题。

proxy()调整 this 指向

    var obj = {
name: 'Lee',
test: function () {
alert(this.name);
}
};
$('#box').click(obj.test); //指向的 this 为#box 元素
$('#box').click($.proxy(obj, 'test')); //指向的 this 为方法属于对象 box

第一百七十五节,jQuery,工具函数的更多相关文章

  1. 第三百七十五节,Django+Xadmin打造上线标准的在线教育平台—创建课程机构app,在models.py文件生成3张表,城市表、课程机构表、讲师表

    第三百七十五节,Django+Xadmin打造上线标准的在线教育平台—创建课程机构app,在models.py文件生成3张表,城市表.课程机构表.讲师表 创建名称为app_organization的课 ...

  2. 第一百七十六节,jQuery,插件

    jQuery,插件 学习要点: 1.插件概述 2.验证插件 3.自动完成插件 4.自定义插件 插件(Plugin)也成为 jQuery 扩展(Extension),是一种遵循一定规范的应用程序接口编 ...

  3. 第一百六十五节,jQuery,过滤选择器

    jQuery,过滤选择器 学习要点: 1.基本过滤器 2.内容过滤器 3.可见性过滤器 4.子元素过滤器 5.其他方法 过滤选择器简称:过滤器.它其实也是一种选择器,而这种选择器类似与 CSS3 (h ...

  4. 第一百八十五节,jQuery,Ajax 表单插件

    jQuery,Ajax 表单插件 学习要点: 1.核心方法 2.option 参数 3.工具方法 传统的表单提交,需要多次跳转页面,极大的消耗资源也缺乏良好的用户体验.而这款 form.js 表单的 ...

  5. 第一百七十四节,jQuery,Ajax进阶

    jQuery,Ajax进阶 学习要点: 1.加载请求 2.错误处理 3.请求全局事件 4.JSON 和 JSONP 5.jqXHR 对象 在 Ajax 课程中,我们了解了最基本的异步处理方式.本章,我 ...

  6. 第一百七十九节,jQuery-UI,知问前端--按钮 UI-图标

    jQuery-UI,知问前端--按钮 UI 学习要点: 1.使用 button 按钮 2.修改 button 样式 3.button()方法的属性 4.button('action', param) ...

  7. 第一百二十五节,JavaScript,XML

    JavaScript,XML 学习要点: 1.IE中的XML 2.DOM2中的XML 3.跨浏览器处理XML 随着互联网的发展,Web应用程序的丰富,开发人员越来越希望能够使用客户端来操作XML技术. ...

  8. 第一百三十五节,JavaScript,封装库--拖拽

    JavaScript,封装库--拖拽 封装库新增1个拖拽方法 /** tuo_zhuai()方法,将一个弹窗元素实现拖拽功能 * 注意:一般需要在css文件将元素里的某一个区块光标设置成提示可以拖拽, ...

  9. 第二百七十五节,MySQL数据库安装和介绍

    MySQL数据库安装 一.概述 1.什么是数据库 ? 答:数据的仓库,称其为数据库 2.什么是 MySQL.Oracle.SQLite.Access.MS SQL Server等 ? 答:他们均是一种 ...

随机推荐

  1. ODATA4 及实现

    ODATA4 的JAVASCRIPT 实现:     http://jaydata.org/ ODATA4 的JAVA 项目  Apache Olingo:http://olingo.incubato ...

  2. [shell 编程] if [ $# -eq 0 ]该语句是什么含义?

    $0: shell或shell脚本的名字$*:以一对双引号给出参数列表$@:将各个参数分别加双引号返回$#:参数的个数$_:代表上一个命令的最后一个参数$$:代表所在命令的PID$!:代表最后执行的后 ...

  3. Android--使用XMLPull解析xml

    在Android中极力推荐的xmlpull方式解析xml.xmlpull不只能够使用在Android上.相同也适用于javase,但在javase环境下.你须要自己去获取xmlpull所依赖的类库. ...

  4. web UIproject师必读的一篇文档,写的很好

    今天在花瓣网上看到的一片文章.写的是web UIproject师的工作应该是如何的,内容非常精彩,分享给小伙伴.希望web UIproject师看了之后有所启示. 我不是一个简单的web UI htt ...

  5. android源代码下载备注

    android源代码下载的參考网上比較多,就不贴上来了,主要是备注下下载源代码过程中须要注意的地方. 1. google官方下载步骤地址: http://source.android.com/sour ...

  6. XDebug 教程

    安装说明: PHP调试时,不得不提XDEBUG这个调试利器.学习PHP以来,几乎所有的问题我都利用它来解决. 首先关于如何安装,不在赘述,请自行google之.(需要特别注意的是:PHP5.2 和5. ...

  7. 虚拟机oracle virtualbox 上安装centos6.5 网络设置

    上篇文章写到,在虚拟机上安装centos6.5,结果依照文章非常顺利的安装了,可是用yum安装软件的时候.报错,源有问题,不能下载,然后ping一下摆渡.非常悲催 dns解析不了,cat /etc/r ...

  8. 倍福TwinCAT(贝福Beckhoff)常见问题(FAQ)-人机界面快速入门 TC2

    创建最简单的静态文本,就像是label,就只需要绘制一个矩形框,然后填写Text,取消边框即可(你也可以设置自定义字体)   创建动态的文本框,就像是textbox,需要设置这个矩形框的Text为%d ...

  9. struts2入门示例(hello world)

    1. 环境搭建 按照之前的文章配置好myeclipse的jdk和tomcat,并新建一个web项目后,可开始动手配置与struts2相关的地方了.首先去struts的官网下载好最新的struts2代码 ...

  10. java之this关键字

    this使用范围 1.在类的方法定义中使用的this关键字代表调用该方法对象的引用. 2.当必须指出当前使用方法的对象是谁时,要使用关键字this. 3.有时使用this可以处理方法中成员变量和参数重 ...