深入学习jQuery特性操作

来源:互联网 发布:中国软件安全联盟 编辑:程序博客网 时间:2024/06/07 19:44

前面的话

  每个元素都有一个或者多个特性,这些特性的用途就是给出相应元素或者其内容的附加信息。操作特性的DOM方法主要有3个:getAttribute()方法、setAttribute()方法和removeAttribute()方法,而在jQuery中用一个attr()与removeAttr()就可以全部搞定了,包括兼容问题。本文将介绍jQuery中的特性操作

 

获取特性

  jQuery中用attr()方法来获取和设置特性,attr是attribute(特性)的缩写,在jQuery DOM操作中会经常用到attr()方法

attr(attributeName)

  attr(传入特性名):获取特性的值,相当于DOM中的getAttribute()

复制代码
<div id="test"></div><script src="http://cdn.bootcss.com/jquery/1.12.4/jquery.min.js"></script><script>console.log(test.getAttribute('id'));//'test'    console.log($('#test').attr('id'));//'test'</script>
复制代码

  [注意]attr()方法只获取第一个匹配元素的属性值。要获取每个单独的元素的属性值,我们依靠jQuery的.each()或者.map()方法循环

复制代码
<div class="test" id="ele1">元素一</div><div class="test" id="ele2">元素二</div><script src="http://cdn.bootcss.com/jquery/1.12.4/jquery.min.js"></script><script>console.log($('.test').attr('id'));//'test'$('.test').each(function(index) {  console.log(index+":"+$(this).attr('id'));//'1:ele1 2:ele2'});</script>
复制代码

prop()

  属性(property)和特性(attribute)是不同的。属性是DOM节点的属性,而特性是HTML标签的特性

  [注意]关于属性和特性的区别的详细信息移步至此

复制代码
<div id="test" data="abc"></div><script src="http://cdn.bootcss.com/jquery/1.12.4/jquery.min.js"></script><script>test.data = 123;//IE8-浏览器返回123,其他浏览器返回'abc'console.log(test.getAttribute('data'))console.log(test.data)//123//IE8-浏览器返回123,其他浏览器返回'abc'console.log($('#test').attr('data'))console.log($('#test').prop('data'))//123</script>
复制代码

  由上面代码可知,jQuery并没有解决低版本IE浏览器属性和特性混淆的问题

 

设置特性

  设置特性虽然依然使用attr()方法,但却有3种方式

【1】attr(attributeName,value)

  attr(特性名, 特性值):设置特性的值,相当于DOM中的setAttribute()

复制代码
<div id="test"></div><script src="http://cdn.bootcss.com/jquery/1.12.4/jquery.min.js"></script><script>test.setAttribute('title','abc');console.log(test.getAttribute('title'))//'abc'$('#test').attr('title','123');    console.log($('#test').attr('title'));//'123'</script>
复制代码

  jQuery禁止改变一个<input>或<button>元素的type特性,会静默失败。因为IE8-不会允许改变<input>或者<button>元素的type特性,静默失败

复制代码
<input id="test" type="text"><script src="http://cdn.bootcss.com/jquery/1.12.4/jquery.min.js"></script><script>test.setAttribute('type','button');$('#test').attr('type','button');    </script>
复制代码

【2】attr(attributes)

  attr(attributes):给指定元素设置多个特性值,即{特性名一: “特性值一”,特性名二:“特性值二”,…}

  当设置多个特性,包裹特性名的引号是可选的

复制代码
<div id="test"></div><script src="http://cdn.bootcss.com/jquery/1.12.4/jquery.min.js"></script><script>test.setAttribute('title','abc');test.setAttribute('a','abc');console.log(test.getAttribute('title'))//'abc'console.log(test.getAttribute('a'))//'abc'$('#test').attr({    title: '123',    a: '123'});    console.log($('#test').attr('title'));//'123'console.log($('#test').attr('a'));//'123'</script>
复制代码

  [注意]设置样式名“class”特性时,必须使用引号。否则IE8-浏览器下会报错

复制代码
<div id="test"></div><script src="http://cdn.bootcss.com/jquery/1.12.4/jquery.min.js"></script><script>$('#test').attr({    class: 'test'});    //IE8-浏览器会报错,其他浏览器输出'test'console.log($('#test').attr('class'));</script>
复制代码

【3】attr(attributeName,function(index,attr))

  attr(特性名,函数值):通过使用一个函数来设置属性,可以根据该元素上的其它属性值返回最终所需的属性值

  函数中的index表示元素在匹配集合中的索引位置,html表示元素原来的HTML内容,this指向当前的元素,函数返回用来设置的值

复制代码
<div class="test" id="ele1" title="元素">元素一</div><div class="test" id="ele2" title="元素" >元素二</div><script src="http://cdn.bootcss.com/jquery/1.12.4/jquery.min.js"></script><script>$('.test').attr('title',function(index,attr){    return attr + this.className +index})console.log($('#ele1').attr('title'));//元素test0console.log($('#ele2').attr('title'));//元素test1</script>
复制代码

  如果用javascript实现类似的效果,实际上就是字符串连接

  [注意]IE8-浏览器不支持getElementsByClassName()方法

复制代码
<div class="test" id="ele1" title="元素">元素一</div><div class="test" id="ele2" title="元素" >元素二</div><script>var classTest = document.getElementsByClassName('test');for(var i = 0; i < classTest.length; i++){    classTest[i].title = classTest[i].title + classTest[i].className + i;}console.log(ele1.title);//元素test0console.log(ele2.title);//元素test1</script>
复制代码

 

删除特性

removeAttr(attributeName)

  removeAttr()方法使用原生的removeAttribute()函数,但是它的优点是可以直接在一个jQuery 对象上调用该方法,并且它解决了跨浏览器的特性名不同的问题

  要移除的属性名从1.7版本开始,可以是一个空格分隔的属性列表

复制代码
<div id="ele1" title="元素" data="value">元素</div><script src="http://cdn.bootcss.com/jquery/1.12.4/jquery.min.js"></script><script>console.log($('#ele1').attr('title'));//'元素'console.log($('#ele1').attr('data'));//'value'$('#ele1').removeAttr('title data');console.log($('#ele1').attr('title'));//undefinedconsole.log($('#ele1').attr('data'));//undefined</script>

阅读全文
'); })();
0 0
原创粉丝点击
热门IT博客
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 化妆品销售技巧 营销话术 销售车的技巧 房地产销售技巧 产品销售技巧 话术 xiaoshou 销售话术 为什么要做销售200个理由 汽车销售技巧和话术 销售谈判技巧 怎样做好销售技巧语术 销售汽车技巧和话术 销售 女保险推销员用身体推销 电话被标记为广告推销怎么办 推锅怎么玩 闩怎么读 闩读音 门闩 闩的读音 闩怎么读音 门闩读音 关门落闩 阎王闩 推雪铲厂家 绝世剑姬凌雪被徒弟推 推雪机 推饼子绝技 推饼子分析仪 推饼子有什么技巧 推饼子技巧培训 推饼子玩法 推饼 推饼记号1一9怎么做 推饼技巧 推饼怎么玩 推饼技巧揭秘 推饼绝技 推饼有什么技巧吗