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 相关文章推荐
Mootools 1.2教程 同时进行多个形变动画
Sep 15 Javascript
Extjs中ComboBox加载并赋初值的实现方法
Mar 22 Javascript
父元素与子iframe相互获取变量和元素对象的具体实现
Oct 15 Javascript
jQuery实现div拖拽效果实例分析
Feb 20 Javascript
使用jQuery处理AJAX请求的基础学习教程
May 10 Javascript
移动端H5开发 Turn.js实现很棒的翻书效果
Jun 20 Javascript
深入理解Node.js中通用基础设计模式
Sep 19 Javascript
使用JS代码实现俄罗斯方块游戏
Aug 03 Javascript
ExtJs使用自定义插件动态保存表头配置(隐藏或显示)
Sep 25 Javascript
laydate只显示时分 不显示秒的功能实现方法
Sep 28 Javascript
mpvue 页面预加载新增preLoad生命周期的两种方式
Oct 17 Javascript
Vue切换组件实现返回后不重置数据,保留历史设置操作
Jul 21 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实现Javascript中的escape及unescape函数代码分享
2015/02/10 PHP
yii分页组件用法实例分析
2015/12/28 PHP
PHP程序员的技术成长规划
2016/03/25 PHP
在Laravel框架里实现发送邮件实例(邮箱验证)
2016/05/20 PHP
php查找字符串中第一个非0的位置截取
2017/02/27 PHP
JScript中使用ADODB.Stream判断文件编码的代码
2008/06/09 Javascript
让Firefox支持event对象实现代码
2009/11/07 Javascript
javascript window.opener的用法分析
2010/04/07 Javascript
js鼠标点击事件在各个浏览器中的写法及Event对象属性介绍
2013/01/24 Javascript
javascript 实现 秒杀,团购 倒计时展示的记录 分享
2013/07/12 Javascript
基于jquery实现下拉框美化特效
2016/02/02 Javascript
jQuery表格插件datatables用法汇总
2016/03/29 Javascript
本地Bootstrap文件字体图标引入却无法显示问题的解决方法
2020/04/18 Javascript
微信小程序 scroll-view组件实现列表页实例代码
2016/12/14 Javascript
javascript变量提升和闭包理解
2018/03/12 Javascript
使用react实现手机号的数据同步显示功能的示例代码
2018/04/03 Javascript
jQuery滑动效果实现方法分析
2018/09/05 jQuery
详解webpack loader和plugin编写
2018/10/12 Javascript
深度解读vue-resize的具体用法
2020/07/08 Javascript
Vue自定义全局弹窗组件操作
2020/08/11 Javascript
Python中用format函数格式化字符串的用法
2015/04/08 Python
python实现数独游戏 java简单实现数独游戏
2018/03/30 Python
Python实现点阵字体读取与转换的方法
2019/01/29 Python
python pexpect ssh 远程登录服务器的方法
2019/02/14 Python
TensorFlow实现自定义Op方式
2020/02/04 Python
浅谈sklearn中predict与predict_proba区别
2020/06/28 Python
python实现快速文件格式批量转换的方法
2020/10/16 Python
美国领先的男士和女士内衣购物网站:Freshpair
2019/02/25 全球购物
领导干部四风问题自我剖析材料
2014/09/25 职场文书
2014县政府领导班子三严三实对照检查材料思想汇报
2014/09/26 职场文书
物价局领导班子四风问题整改措施
2014/10/26 职场文书
汤姆叔叔的小屋读书笔记
2015/06/30 职场文书
答谢酒会主持词
2015/07/02 职场文书
特种设备安全管理制度
2015/08/06 职场文书
亲情作文之母爱
2019/09/25 职场文书
Python趣味爬虫之用Python实现智慧校园一键评教
2021/05/28 Python