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 相关文章推荐
jquery 图片上传按比例预览插件集合
May 28 Javascript
javascript实现playfair和hill密码算法
Dec 07 Javascript
JavaScript不使用prototype和new实现继承机制
Dec 29 Javascript
javascript中attachEvent用法实例分析
May 14 Javascript
javascript实现动态统计图开发实例
Nov 21 Javascript
jQuery UI库中dialog对话框功能使用全解析
Apr 23 Javascript
vue2 如何实现div contenteditable=“true”(类似于v-model)的效果
Feb 08 Javascript
大白话讲解JavaScript的Promise
Apr 06 Javascript
简单理解Vue中的nextTick方法
Jan 30 Javascript
微信小程序之分享页面如何返回首页的示例
Mar 28 Javascript
JavaScript事件对象event用法分析
Jul 27 Javascript
jQuery操作动画完整实例分析
Jan 10 jQuery
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
windows下配置apache+php+mysql时出现问题的处理方法
2014/06/20 PHP
Zend Framework教程之Loader以及PluginLoader用法详解
2016/03/09 PHP
一键生成各种尺寸Icon的php脚本(实例)
2017/02/08 PHP
原生JS实现Ajax通过GET方式与PHP进行交互操作示例
2018/05/12 PHP
thinkphp5框架结合mysql实现微信登录和自定义分享链接与图文功能示例
2019/08/13 PHP
Colortip基于jquery的信息提示框插件在IE6下面的显示问题修正方法
2010/12/06 Javascript
js自动闭合html标签(自动补全html标记)
2012/10/04 Javascript
jQuery事件绑定.on()简要概述及应用
2013/02/07 Javascript
使用mini-define实现前端代码的模块化管理
2014/12/25 Javascript
JavaScript实现数字数组正序排列的方法
2015/04/06 Javascript
JavaScript编写Chrome扩展实现与浏览器的交互及时间通知
2016/05/16 Javascript
jQuery实现的可编辑表格完整实例
2016/06/20 Javascript
jQuery 获取页面li数组并删除不在数组中的key
2016/08/02 Javascript
jQuery Easyui datagrid行内实现【添加】、【编辑】、【上移】、【下移】
2016/12/19 Javascript
jQuery实现table中两列CheckBox只能选中一个的示例
2017/09/22 jQuery
深入浅出webpack之externals的使用
2017/12/04 Javascript
JS实现基于拖拽改变物体大小的方法
2018/01/23 Javascript
VUE+node(express)实现前后端分离
2019/10/13 Javascript
js前端如何写一个精确的倒计时代码
2019/10/25 Javascript
小程序怎样让wx.navigateBack更好用的方法实现
2019/11/01 Javascript
JavaScript原型式继承实现方法
2019/11/06 Javascript
[54:19]完美世界DOTA2联赛PWL S2 Magma vs PXG 第二场 11.28
2020/12/01 DOTA
idea创建springMVC框架和配置小文件的教程图解
2018/09/18 Python
python实现QQ空间自动点赞功能
2019/04/09 Python
pandas的to_datetime时间转换使用及学习心得
2019/08/11 Python
使用Python将字符串转换为格式化的日期时间字符串
2019/09/01 Python
pytorch中tensor张量数据类型的转化方式
2019/12/31 Python
pyecharts调整图例与各板块的位置间距实例
2020/05/16 Python
eBay美国官网:eBay.com
2020/10/24 全球购物
说一下Linux下有关用户和组管理的命令
2016/01/04 面试题
物流专业大学生职业生涯规划书范文
2014/01/15 职场文书
助学贷款贫困证明
2014/09/23 职场文书
地道战观后感500字
2015/06/04 职场文书
2016年3月份红领巾广播稿
2015/12/21 职场文书
2019年汽车租赁合同范本!
2019/08/12 职场文书
MySQL 数据库范式化设计理论
2022/04/22 MySQL