jQuery特性操作
来源:互联网 发布:app 源码 编辑:程序博客网 时间:2024/05/17 22:39
获取特性
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>
- jQuery特性操作
- jQuery特性操作
- 深入学习jQuery特性操作
- jQuery——元素特性、属性、数据操作
- jquery之操作元素属性和特性(获取特性值,attr(name)方法的使用)
- jquery之操作元素属性和特性(删除特性,removeAttr()方法的使用)
- jquery之操作元素属性和特性(操作元素属性,each()方法的使用)
- jquery之操作元素属性和特性(设置特性值,attr(name,value),attr(attributes)方法的使用)
- JQuery用法与特性
- jQuery 1.4特性介绍
- jQuery 1.4特性介绍
- jQuery 1.4特性介绍
- jQuery 1.7 新特性
- jquery - ajax特性
- jQuery Mobile 特性
- jQuery 3.0新特性
- 流操作的特性
- 高级特性-操作数据库
- python paramiko模块实现远程文件上传文件, 执行命令
- ubuntu 安装SVN版本控制器使用
- netty连接池FixedChannelPool应用
- haproxy加密长度报警
- 最简单的基于libVLC的例子:最简单的基于libVLC的视频播放器(图形界面版)
- jQuery特性操作
- XP系统CreateMutex返回0,LastError=6
- 陈越何欣铭老师数据结构PTA08-图8 How Long Does It Take
- Mac下Docker学习笔记之定制Tomcat镜像
- RTP协议分析
- iOS推送
- python3 + Django :Error loading MySQLdb module No module named 'MySQLdb'
- 课堂笔记_图形学基础课程_简单认知00
- java多线程-ThreadPoolExecutor的拒绝策略RejectedExecutionHandler