jQuery 特性操作详解及实例代码


Posted in Javascript onSeptember 29, 2016

前面的话

每个元素都有一个或者多个特性,这些特性的用途就是给出相应元素或者其内容的附加信息。操作特性的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'));//元素test0
console.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);//元素test0
console.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'));//undefined
console.log($('#ele1').attr('data'));//undefined
</script>

通过此文,希望大家能对jQuery 特性操作的知识掌握,谢谢大家对本站的支持!

Javascript 相关文章推荐
简单的无缝滚动程序-仅几行代码
May 08 Javascript
把JS与CSS写在同一个文件里的书写方法
Jun 02 Javascript
JQuery 解析多维的Json数据格式
Nov 02 Javascript
javascript中的delete使用详解
Apr 11 Javascript
JavaScript数组迭代器实例分析
Jun 09 Javascript
JavaScript实现经典排序算法之插入排序
Dec 28 Javascript
vue.js中$set与数组更新方法
Mar 08 Javascript
JS+canvas画布实现炫酷的旋转星空效果示例
Feb 13 Javascript
微信小程序防止多次点击跳转和防止表单组件输入内容多次验证功能(函数防抖)
Sep 19 Javascript
layer ui 导入文件之前传入数据的实例
Sep 23 Javascript
小程序简单两栏瀑布流效果的实现
Dec 18 Javascript
js调用网络摄像头的方法
Dec 05 Javascript
JS中常用的正则表达式
Sep 29 #Javascript
JS 事件绑定、事件监听、事件委托详细介绍
Sep 28 #Javascript
js创建对象几种方式的优缺点对比
Sep 28 #Javascript
AngularJS表单验证中级篇(3)
Sep 28 #Javascript
微信公众号 客服接口的开发实例详解
Sep 28 #Javascript
jQuery解析XML 详解及方法总结
Sep 28 #Javascript
iOS和Android用同一个二维码实现跳转下载链接的方法
Sep 28 #Javascript
You might like
PHP动态创建Web站点的方法
2011/08/14 PHP
PHP+Ajax异步通讯实现用户名邮箱验证是否已注册( 2种方法实现)
2011/12/28 PHP
Zend Framework实现留言本分页功能(附demo源码下载)
2016/03/22 PHP
一个不错的用JavaScript实现的UBB编码函数
2007/03/09 Javascript
jquery获取URL中参数解决中文乱码问题的两种方法
2013/12/18 Javascript
jQuery之选项卡的简单实现
2014/02/28 Javascript
javascript中的return和闭包函数浅析
2014/06/06 Javascript
基于JavaScript实现类似于百度学术高级检索功能
2016/03/02 Javascript
详解基于angular-cli配置代理解决跨域请求问题
2017/07/05 Javascript
jQuery实现每隔一段时间自动更换样式的方法分析
2018/05/03 jQuery
web页面和微信小程序页面实现瀑布流效果
2018/09/26 Javascript
vue+Element实现搜索关键字高亮功能
2019/05/28 Javascript
Node.js API详解之 timer模块用法实例分析
2020/05/07 Javascript
微信小程序学习总结(四)事件与冒泡实例分析
2020/06/04 Javascript
python中文件变化监控示例(watchdog)
2017/10/16 Python
Django管理员账号和密码忘记的完美解决方法
2018/12/06 Python
Python实现高斯函数的三维显示方法
2018/12/29 Python
Python基于Opencv来快速实现人脸识别过程详解(完整版)
2019/07/11 Python
Python 找出出现次数超过数组长度一半的元素实例
2020/05/11 Python
python退出循环的方法
2020/06/18 Python
Python Selenium库的基本使用教程
2021/01/04 Python
中外合拍动画首获奥斯卡提名,“上海出品”《飞奔去月球》能否拿下最终大奖?
2021/03/16 国漫
LUISAVIAROMA中国官网:时尚奢侈品牌购物网站
2020/11/01 全球购物
办公室副主任岗位职责
2013/11/25 职场文书
计算机学生的自我评价分享
2014/02/18 职场文书
工程项目经理任命书
2014/06/05 职场文书
植树节标语
2014/06/27 职场文书
商务英语专业毕业生求职信
2014/07/06 职场文书
个人工作作风整改措施思想汇报
2014/10/13 职场文书
教师个人查摆剖析材料
2014/10/14 职场文书
工程承包协议书
2014/10/20 职场文书
社区节水倡议书
2015/04/29 职场文书
新教师教学工作总结
2015/08/12 职场文书
初三英语教学反思
2016/02/15 职场文书
Java中生成微信小程序太阳码的实现方案
2022/06/01 Java/Android
windows系统搭建WEB服务器详细教程
2022/08/05 Servers