jQuery之工具函数

检测浏览器类型

由于jQuery1.9版本取消了对$.browser的支持,采用$.support来判断浏览器类型

navigator.userAgent

对象和集合操作

1.处理字符串

$.trim(str)清理字符串前后的空白

var str=" hello world! "
str = $.trim(str)
console.log(str)   //result:hello world!
console.log(str.length)   //result:12

2.把对象转换为字符串

$.param将字符串创建为一个序列化的数组或对象。该方法特别适用于一个URL地址查询字符串或ajax请求。

            var option={
                user:"demo",
                passwd:"12345678"
            }
            optionStr=$.param(option)
            console.log(optionStr)  //result:user=demo&passwd=12345678
            console.log(optionStr.length)   //result:25

3.判断数组类型

var array = new Array()
console.log($.isArray(array))
//result: true

4.判断函数类型

            //is function
            function isFun(){

            }
            console.log($.isFunction(isFun))
            //result:true

5.判断特殊对象

5.1检测空对象
var array = new Array()
console.log($.isEmptyObject(array))
//result:true
5.2检测纯对象
var plainObject = new Object()
console.log($.isPlainObject(plainObject))
//result:true
5.3检测window对象

$.isWindow(obj)检测一个对象是否为Window对象

5.4检测XML文档

$.isXMLDoc(node)检测一个DOM节点是否在XML文档中

6.对数组和集合进行迭代

$.each(collection,callback(indexArray,valueOfElement))

            arrayEach = new Array("h","e","l","l","l")
            $.each(arrayEach,function(name,value){
                alert(name+"="+value)
            })

7.生成数组

$.makeArray(obj)将类数组结构装换为真正的数组结构

如,通过$("li")orgetEmementByTagName("li")获得的是一个类数组结构,但是通过makeArray函数转换后就是数组对象

objLi = $("li")
            console.log($.isArray(objLi))
            arrLi = $.makeArray(objLi)
            console.log($.isArray(arrLi))

8.对数组进行筛选

$.grep(array,function(elementOfArray,IndexInArray),[invert])

  • function用来处理每个项目的对比,与each不同,第一个参数是元素,第二个参数时索引
  • invert为true,对callback返回true,如果为false,对callback返回false
            var array = new Array("1","2","3","4","5","6","7","8")
            arrayGt=$.grep(array,function(value,index){
                return value>=5
            })
            console.log(arrayGt)  //result:5,6,7,8
            arrayLt=$.grep(array,function(value,index){
                return value>=5
            },true)
            console.log(arrayLt)  //result:1,2,3,4

9.对数组进行转换

$.map(array,[callback(element,vale)])

            var array = new Array("1","2","3","4","5","6","7","8")
            console.log($.map(array,function(value){
                return value*2
            }))
            //result:2, 4, 6, 8, 10, 12, 14, 16

10.把多个数组结合在一起

$.merge(first,second)

11.删除数组中重复元素

$.unique(array)

var array = new Array("1","2","3","4","5","6","7","8","8")
console.log($.unique(array))
//result: 2, 4, 6, 8, 10, 12, 14, 16

12.在数组中查找指定值

$.inArray(value,array)

var array = new Array("1","2","3","4","5","6","7","8")
alert($.inArray("8",array))
//result:7

缓存

数据缓存的作用就是在一个元素上存取元素而避免循环引用的风险,jQuery通过data函数实现数据缓存的机制

$.data(element,key,value)

  • element表示要关联数据的DOM对象
  • key表示存储的数据名
  • value表示新数据值
            var liObj = $("li")
            $.each(liObj,function(name,index){
                liObj.eq(name).data("indexLi",name) //给每一个li创建数据名indexLi,并用索                                                    //引给其赋值
            })
            $.each(liObj,function(name,index){
                console.log(liObj.eq(name).data("indexLi"))   //读取indexLi的内容
            })
            //result: 0,1,2,3

$.removeData(element,[name])

            var liObj = $("li")
            $.each(liObj,function(name,index){

                liObj.eq(name).data("indexLi",name)
            })
            $("li").removeData("indexLi")  //删除名称为indexLi的缓存
            $.each(liObj,function(name,index){
                console.log(liObj.eq(name).data("indexLi"))
            })
            //result:undefined
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,544评论 6 501
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,430评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,764评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,193评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,216评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,182评论 1 299
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,063评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,917评论 0 274
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,329评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,543评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,722评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,425评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,019评论 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,671评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,825评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,729评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,614评论 2 353

推荐阅读更多精彩内容

  • PHP常用函数大全 usleep() 函数延迟代码执行若干微秒。 unpack() 函数从二进制字符串对数据进行解...
    上街买菜丶迷倒老太阅读 1,366评论 0 20
  • php usleep() 函数延迟代码执行若干微秒。 unpack() 函数从二进制字符串对数据进行解包。 uni...
    思梦PHP阅读 1,984评论 1 24
  • 1.JQuery 基础 改变web开发人员创造搞交互性界面的方式。设计者无需花费时间纠缠JS复杂的高级特性。 1....
    LaBaby_阅读 1,335评论 0 2
  • 1.JQuery 基础 改变web开发人员创造搞交互性界面的方式。设计者无需花费时间纠缠JS复杂的高级特性。 1....
    LaBaby_阅读 1,171评论 0 1
  • Android 3.0之后,Google引入了ActionBar,想统一安卓应用的导航栏样式。但由于ActionB...
    亦枫阅读 2,181评论 1 29