jQuery功能函数详解


Posted in Javascript onFebruary 01, 2015

在javascript编程中,开发者通常需要编写很多小程序来实现一些特定的功能。例如浏览器检测,字符串处理、数组的编辑等。jQuery对这些常用的程序进行了总结,提供了很多实用的函数。

1.检测浏览器。

jQuery通过$.browser对象获取浏览器信息。

属性 说明
msie 如果是ie为true,否则为false
mozilla 如果是mozilla相关的浏览器为true,否则为false
safari 如果是Safari浏览器为true,否则为false
poera 如果是opera浏览器为true,否则为false
version 浏览器的版本号
在使用时,开发者可以直接调用这些属性来获取浏览器属性。如下:

        <script type="text/javascript">

            $(function() {

                function detect() {

                    if ($.browser.msie)

                        return "IE";

                    if ($.browser.mozilla)

                        return "Mozilla";

                    if ($.browser.safari)

                        return "Safari";

                    if ($.browser.opera)

                        return "Opera";

                }

                var sBrowser = detect();

                document.write("您的浏览器是:" + sBrowser + "<br>版本为:" + $.browser.version)
            });

        </script>

2.盒子模型

在jQuery中提供了$.boxModel对象来检测目前所遵循的盒子模型。它是一个布尔值,当为true时,表示遵循w3c标准盒子模型,如果false则为ie的盒子模型

    var sBox = $.boxModel ? "标准W3C" : "IE";
                document.write("您的页面目前支持:" + sBox + "盒子模型");
3.处理javascript对象。

在javascript编程中,可以说一切变量都是对象,例如字符串,日期和数值等。

jQuery提供了一些编辑的方法来处理相关的对象,例如$.trim()函数(首尾去空格) 函数就是其中之一

i.使用$each()方法遍历

前文介绍到each()方法,用于选择器的中的元素遍历,同样对于javascript的数组和对象,可以使用$.each()方法进行遍历。

$.each(object,fn);
其中,object为需要遍历的对象,fn为object中每个元素都执行的函数,其中函数fn可以接受两个参数,第一个参数为数组元素的序号或者是对象的属性。第二个参数为元素或者属性的值。

例子:用$.each()函数遍历数组和对象

<script type="text/javascript">

            var aArray = ["one", "two", "three", "four", "five"];

            $.each(aArray, function(iNum, value) {

                //征对数组

                document.write("序号" + iNum + "值" + value + "<br>");

            });

            var oObj = {

                one: 1,

                two: 2,

                three: 3,

                four: 4,

                five: 5

            };

            $.each(oObj, function(pro, value) {

                //征对对象

                document.write("属性" + pro + "值" + value + "<br>")

            });

        </script>

从上面的例子可以看到,$.each()对遍历数组和对象都十分方便,例如对未知的属性$.browser,使用$.each进行遍历

$.each($.browser, function(iNum, value) {
                //征对数组
                document.write("属性" + iNum + "值" + value + "<br>");
            });
得值:

属性chrome值true
属性version值39.0.2171.99
属性webkit值true
ii.过滤数据

对于数组中的数据,很多时候开发者需要对其进行筛选,如果使用纯javascript,往往需for循环进行逐一检查。jQuery提供了$.grep()方法。能够便捷的过滤数组的数据。

其语法如下:

$.grep(Array,fn,[invert])
其中,array是需要过滤的数组对象名称,fn为过滤函数,对数组中的每个对象,如果返回true则保留,否则去除。可选的invert为布尔值,如果设置为true.则函数fn取反,满足条件的被去除。

var aArray = [2, 3, 4, 7, 9, 8, 2, 2, 4, 2, 3, 6, 9, 0, 3, 4, 2, 5];

            var aResult = $.grep(aArray, function(value) {

                return value >= 4;

            });         

            document.write(aResult.join());

首先定义了数组aArray,然后用$.grep()方法将值大于等于4挑选出来得到新的数组

例子2,过滤数组的高级方法。

    <script type="text/javascript">

            var aArray = [2, 3, 4, 7, 9, 8, 2, 2, 4, 2, 3, 6, 9, 0, 3, 4, 2, 5];

            var aResult = $.grep(aArray, function(value, index) {

                //元素的值和value和序号同时判断

                return (value >= 4 && index > 3);

            });
            document.write(aResult.join());

        </script>

iii转化数组

很多时候开发者希望某个数组中的元素能够统一的转化,例如将所有的元素都乘以2.虽然在javascript中例如for循环可以实现,但是jQuery提供了更为便利的$.map()方法。这个方法如下

$.map(array,fn)
其中,array为要转化的数组,fn为转化函数,对数组中的每一项都执行,该函数同样可以接受两个函数,1个参数为元素的值。2个参数为元素的序号,是可选参数。

<script type="text/javascript">

            $(function() {

                var aArray = ["a", "b", "c", "d", "e", "f", "g", "h", "i"];

                $("p:eq(0)").text(aArray.join());

                aArray = $.map(aArray, function(value, index) {

                    //将数组转化为大写并添加了序号

                    return (value.toUpperCase() + index);

                });

                $("p:eq(1)").text(aArray.join());
                cArray = $.map(aArray, function(value) {

                    return value + value;

                });

                $("p:eq(2)").text(cArray.join());

            });

        </script>

        <p></p>

        <p></p>

        <p></p>

执行结果

a,b,c,d,e,f,g,h,i

A0,B1,C2,D3,E4,F5,G6,H7,I8

A0A0,B1B1,C2C2,D3D3,E4E4,F5F5,G6G6,H7H7,I8I8
使用$.map()函数进行转移后,数组长度不一定与原来的数组相同。可以通过设置null来删除数组的元素。

<script type="text/javascript">

            $(function() {

                var aArray = [0, 1, 2, 3, 4, 5, 6, 7, 8];

                $("p:eq(0)").text(aArray.join());

                $("p:eq(1)").text("aArray长度:" + aArray.length + "值:" + aArray.join());

                cArray =$.map(aArray,function(value){

                    //比1大的+1后返回,否则通过设置为null将其删除

                    return value>1?value+1:null;

                });

                $("p:eq(2)").text("cArray长度:" + cArray.length + "值:" + cArray.join());

            });

        </script>

        <p></p>

        <p></p>

        <p></p>

除了删除元素外,$.map转化数组时同样可以增加数组元素。

    <script type="text/javascript">

            $(function() {

                var aArray = ["one", "two", "three", "four", "five"];

                $("p:eq(0)").text(aArray.join());

                cArray =$.map(aArray,function(value){

                    return value.split("");

                });

                $("p:eq(1)").text("cArray长度:" + cArray.length + "值:" + cArray.join());

            });

        </script>

        <p></p>

        <p></p>

执行结果

one,two,three,four,five

cArray长度:19值:o,n,e,t,w,o,t,h,r,e,e,f,o,u,r,f,i,v,e
以上代码在$.map转化过程中,split("")方法将元素拆分为一个个字母

iiii搜索数组元素

对于字符串,可以通过indexOf()来搜索特定字符所处的位置,对于数组元素,javascript没有提供类似的方法。在jQ中,$.inArray()函数可以很好的数组元素的搜索功能。语法如下:

$.inArray(value,array)
其中,value为希望查找的对象,array为数组本身,如果找到了则返回第一个匹配元素在数组的位置。如果没有则返回-1.

    <script type="text/javascript">

            $(function() {

                var aArray = ["one", "two", "three", "four", "five"];

                var cx1 = $.inArray("two", aArray);

                var cx2 = $.inArray("www", aArray);

                $("p:eq(0)").text(cx1);

                $("p:eq(1)").text(cx2);

            });

        </script>

        <p></p>

        <p></p>

4.获取外部代码

在一些较大工程中,开发者将不同的js放在不同的js文件中,有时根据补贴的需求加载不同的代码。jQuery提供了$.getScript()实现外边的代码加载。使用方法如:

$.getScript(url,[callback])
其中,url为外部资源的地址,可以是相对的,也可以是绝对的地址。callback为加载成功后的回调函数,可选。

<script type="text/javascript">

            $(function() {

                $("p:eq(0)").click(function() {

                    $.getScript("1.js");

                });

                $("p:eq(1)").click(function() {

                    textfun();

                });

            });

        </script>

        <p>点击1</p>

        <p>点击2</p>

其中1.js代码为

alert("加载ok!")

function textfun(){

    alert("testfun")

};
Javascript 相关文章推荐
url参数中有+、空格、=、%、&amp;、#等特殊符号的问题解决
May 15 Javascript
使用jQuery中的when实现多个AJAX请求对应单个回调的例子分享
Apr 23 Javascript
javascript实现类似超链接的效果
Dec 26 Javascript
JavaScript让网页出现渐隐渐显背景颜色的方法
Apr 21 Javascript
jquery计算鼠标和指定元素之间距离的方法
Jun 26 Javascript
4种JavaScript实现简单tab选项卡切换的方法
Jan 06 Javascript
jQuery插件WebUploader实现文件上传
Nov 07 Javascript
ES6新特性之字符串的扩展实例分析
Apr 01 Javascript
详解angularjs中的隔离作用域理解以及绑定策略
May 31 Javascript
JS实现简易的图片拖拽排序实例代码
Jun 09 Javascript
JavaScript使用FileReader实现图片上传预览效果
Mar 27 Javascript
vue实现点击展开点击收起效果
Apr 27 Javascript
jQuery动画与特效详解
Feb 01 #Javascript
jquery制作 随机弹跳的小球特效
Feb 01 #Javascript
jQuery实现单击和鼠标感应事件
Feb 01 #Javascript
jquery制作LED 时钟特效
Feb 01 #Javascript
thinkphp 表名 大小写 窍门
Feb 01 #Javascript
javascript实现带节日和农历的日历特效
Feb 01 #Javascript
2种jQuery 实现刮刮卡效果
Feb 01 #Javascript
You might like
如何在PHP中使用Oracle数据库(3)
2006/10/09 PHP
php Smarty date_format [格式化时间日期]
2010/03/15 PHP
php中去除所有js,html,css代码
2010/10/12 PHP
PHP 设置MySQL连接字符集的方法
2011/01/02 PHP
PHP生成不同颜色、不同大小的tag标签函数
2013/09/23 PHP
PHP中spl_autoload_register函数的用法总结
2013/11/07 PHP
php字符比较函数similar_text、strnatcmp与strcasecmp用法分析
2014/11/18 PHP
Zend Framework基本页面布局分析
2016/03/19 PHP
PHP的Yii框架中创建视图和渲染视图的方法详解
2016/03/29 PHP
PHP实现的DES加密解密封装类完整实例
2017/04/29 PHP
『jQuery』名称冲突使用noConflict方法解决
2013/04/22 Javascript
JavaScript动态生成二维码图片
2016/04/20 Javascript
一个简单不报错的summernote 图片上传案例
2016/07/11 Javascript
Highcharts入门之基本属性
2016/08/02 Javascript
JavaScript数组操作函数汇总
2016/08/05 Javascript
用iframe实现不刷新整个页面上传图片的实例
2016/11/18 Javascript
mockjs+vue页面直接展示数据的方法
2018/12/19 Javascript
说说如何利用 Node.js 代理解决跨域问题
2019/04/22 Javascript
AngularJs中$cookies简单用法分析
2019/05/30 Javascript
[01:17:47]TNC vs VGJ.S 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/19 DOTA
[01:03:41]完美世界DOTA2联赛PWL S3 DLG vs Phoenix 第一场 12.17
2020/12/19 DOTA
用Python和MD5实现网站挂马检测程序
2014/03/13 Python
python实现图片处理和特征提取详解
2017/11/13 Python
关于python中plt.hist参数的使用详解
2019/11/28 Python
Mio Skincare英国官网:身体紧致及孕期身体护理
2018/08/19 全球购物
公司门卫的岗位职责
2014/02/19 职场文书
初中英语课后反思
2014/04/25 职场文书
在校实习生求职信
2014/06/18 职场文书
纪检干部先进事迹材料
2014/08/23 职场文书
项目负责人岗位职责
2015/02/15 职场文书
2014年个人年终总结
2015/03/09 职场文书
2015年学校教育教学工作总结
2015/04/22 职场文书
运动会开幕式新闻稿
2015/07/17 职场文书
Mysql基础知识点汇总
2021/05/26 MySQL
一次Mysql update sql不当引起的生产故障记录
2022/04/01 MySQL
Nginx限流和黑名单配置
2022/05/20 Servers