jquery 属性操作 attr( ) prop()css( )区别
一 attr () 和 prop( ) 操作属性
谈谈我的总结:
- 1
- 2
1 属性的定义,根据W3C手册所述:属性包括,标准属性:id class style title 语言属性 lang dir以及某些特定的元素的固有的属性,比如 a 的 href target 属性,input元素的 radio checked type alt src disabled value 等 ,img标签的width height src alt 等,不存在的属性叫做新增属性。
2 attr( ) 可以设置元素的属性(也就是给元素新增加一个原来并不存在的属性)也可以获取元素的本来就有的属性以及额外设置的属性。如果要获取的属性没有设置,那么获取到的结果是 undefined;
3 prop( )可以设置元素的属性(HTML固有的属性,可以给元素添加属性)也可以获取元素的固有的属性值,如果是额外设置的其他属性,则无法通过prop( )获取。
4 设置元素属性:
attr (“属性名”,“属性值”) 既可以设置元素固有的属性,也可以设置元素本来不存在的属性,比如attr()可以给下面代码div行设置固有的HTML属性,包括 ttle id class 等,也可以设置原先不存在的属性,也就是造一个新的属性,比如 index aaa 等,任何都行;而 prop( “属性名”,“属性值”)只能设置固有的HTML属性。
获取元素属性值:
attr(“属性值“)只能获取已经设置在元素身体上的属性值,包括固有属性和新增属性,没有设置的属性将无法获取到值,结果全部是undefined;
prop(“属性值”) 只能获取固有属性的属性值,新增属性的属性值无法被获取到。先解释这段话的意思,看这段代码:
<div class="cls1 cls2" id="dv"></div>
$("#dv").attr("index","1")//设置新增属性
$("#dv").attr("title","1")//设置固有属性
- 1
- 2
- 3
- 4
- 5
设置之后div变为
<div class="cls1 cls2" id="dv" index="1" title="1"></div>
console.log($("#dv").prop("title"));//输出结果 1
console.log($("#dv").prop("index"));//输出结果 undefined
- 1
- 2
- 3
- 4
- 5
二 撸一段代码来解释一下
A 对于固有的HTML属性
html代码
<div class="cls1 cls2" id="dv" title="我是一个div"></div>
- 1
- 2
jquery代码(输出html代码里面有的属性,attr只能获取class id title ,prop可以获取没有设置的属性 比如style)
console.log($("#dv").prop("title"));
console.log($("#dv").attr("title"));
console.log($("#dv").prop("style"));
console.log($("#dv").attr("style"));
- 1
- 2
- 3
- 4
- 5
- 6
控制台输出
(可以获取HTML固有的属性值)
我是一个div
我是一个div
CSSStyleDeclaration {alignContent: "", alignItems: "", alignSelf: "", alignmentBaseline: "", all: ""…}
undefined
- 1
- 2
- 3
- 4
- 5
由此可见,1 对于固有的HTMl属性,如果在元素中设置了,那么attr 和 prop 都可以获取的到
2 对于固有的HTMl属性,如果在元素中没有设置,那么 attr 获取的结果是undefined 而prop可以获取那个属性的值。
在来看一个简单的例子
html代码
<input type="checkbox" value="复选框" id="chk"/>这是一个复选框
- 1
- 2
这段代码里面并没有设置checked属性值(checked 属性对应值有两个 true false)
jquery代码(输出html代码里面有的属性,attr只能获取type value id,prop可以获取没有设置的属性 比如checked )
console.log($("#chk").prop("value"));
console.log($("#chk").attr("value"));
console.log($("#chk").prop("checked"));
console.log($("#chk").attr("checked"));
- 1
- 2
- 3
- 4
- 5
- 6
输出结果:
点击复选框之前输出如下:
复选框
复选框
false
undefined
- 1
- 2
- 3
- 4
- 5
点击复选框之后输出如下:
复选框
复选框
true
undefined
- 1
- 2
- 3
- 4
- 5
总结:
1 如果想要通过attr()获取属性值,那么该属性必须显式的设置在HTML代码中或者通过attr新增的属性才能被获取到,如果没有设置,那么将返回undefined
2 如果通过prop()获取属性值,那么该属性只能是HTMl的固有属性,无论是否显式的设置,都可以获取其对应的属性值,如果是额外增加的属性,那么将无法获取。下面来说这个问题
html代码:
<div class="cls1 cls2" id="dv" title="我是一个div"></div>
- 1
- 2
jquery代码
$("#dv").attr("index","1")//通过attr给元素设置新的属性,W3C原来不存在的属性
console.log($("#dv").prop("index"));
console.log($("#dv").attr("index"));
- 1
- 2
- 3
- 4
代码执行后:
<div class="cls1 cls2" id="dv" title="我是一个div" index="1"></div>
- 1
- 2
控制台输出:
undefined
1
- 1
- 2
- 3
三 加点福利吧 css( )
jquery代码
console.log($("#dv").prop("style"));
console.log($("#dv").attr("style"));
console.log($("#dv").css("width"));
- 1
- 2
- 3
- 4
- 5
- 6
给div添加一些样式,无论该样式是内嵌式
html代码:
<div class="cls1 cls2" id="dv" title="我是一个div" style="width:100px;height: 50px;"></div>
- 1
- 2
控制台输出
CSSStyleDeclaration {0: “width”, 1: “height”, 2: “background-color”, alignContent: “”, alignItems: “”, alignSelf: “”, alignmentBaseline: “”, all: “”…}
width:100px;height: 50px;
100px
或者内联式
<style>
.cls1 {
width: 100px;
height: 50px;
background-color: pink;
}
</style>
div class="cls1 cls2" id="dv" title="我是一个div"></div>
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
控制台输出 :
CSSStyleDeclaration {alignContent: “”, alignItems: “”, alignSelf: “”, alignmentBaseline: “”, all: “”…}
undefined
100px
小结:注意区分,属性 和 样式属性 平常说的属性包括id class style lang dir title等,然后注意样式属性指的是设置在 style 属性里面或者 style 标签里面的 ,不要搞混.css() 只能获取是 style 里面的属性值;
注意语法:获取style样式属性值:对象.css(“属性名”),设置style样式属性值:对象.css(“属性名”,“属性值”)双引号必不可少
四 在DOM中获取元素属性的文章可参阅 http://blog.csdn.net/qq_35809245/article/details/54146996
五 欢迎阅读,你辣么美丽和勤奋,祝你开心!
jquery 属性操作 attr( ) prop()css( )区别的更多相关文章
- jQuery 属性操作attr().prop().text().html().val()
这些方法用于获取和设置 DOM 元素的属性. 一.attr(): <!--样式:在style里面写的,用css来操作.--> <!--属性:在元素里面写的,用attr方法操作.--& ...
- jQuery 属性操作 - attr() 方法
定义和用法 attr() 方法设置或返回被选元素的属性值. 根据该方法不同的参数,其工作方式也有所差异. 实例1 设置被选元素的属性和值. <html><head><sc ...
- jquery——属性操作、特殊效果
1. attr().prop() 取出或者设置某个属性的值 <!DOCTYPE html> <html lang="en"> <head> &l ...
- attr(),prop()二者区别和最佳实践
attr(),prop()二者区别和最佳实践 最近使用到attr()来获取自定义属性值,我印象中是有一个方法可以获取到自定义属性值,进而我又想到了另一个方法prop(). 查看了手册发现并没有对二者 ...
- Jquery属性获取——attr()与prop()
今天在项目中使用<select></select>下拉菜单时,使用juery操作,使页面加载完菜单默认选中的值为2,我一开始的操作如下: <!--html部分--> ...
- jQuery属性选择器.attr()和.prop()两种方法
在判断表单单选框是否被选中时,通常会想到使用$('#checkbox').attr('checked')来判断,但在一些情况下,你会发现这种方法并不管用,得到的是undefined. 原来jQuery ...
- jQuery 属性操作和CSS 操作
如有在jQuery方法中涉及到函数,此函数必定会返回一个数值(函数由于运行次数不同触发一些不同效果) jQuery 属性操作方法(以下方法前些日子学习过,不再赘述) addClass() attr() ...
- jQuery属性操作之.attr()
目录 .attr() 调用形式:$("xxx").attr(name) 调用形式:$("xxx").attr(name,value); 调用形式:$(" ...
- jQuery源代码学习之八——jQuery属性操作模块
一.jQuery属性模块整体介绍 jQuery的属性操作模块分四个部分:html属性操作,dom属性操作,类样式操作,和值操作. html属性操作(setAttribute/getAttribute) ...
随机推荐
- 发现一个可以搜索常用rpm包的地址(http://www.rpmfind.net/)
http://www.rpmfind.net/ 虽然资源不多,但也够用.
- Tasker 正则表达式测试器
http://tieba.baidu.com/p/3533498043 本次分享的是一个正则表达式测试工具,用来方便快捷的进行Tasker正则方面的测试,一些比较复杂的匹配需要进行多次尝试才可能正确匹 ...
- 源码管理--llorch的Visual Studio基本教程(四)
通用的演示样例说明: 本系列博客仅仅讨论工具的基础,不讨论不论什么语言. 甚至不讨论快捷键:-) 能够用鼠标就完毕本教程 IDE默认指代的是Visual Studio 2013 Community E ...
- hdu4445 CRAZY TANK 2012金华赛区现场赛D题
简单推下物理公式 对角度枚举 物理公式不会推啊智商捉急啊.... 到现在没想通为什么用下面这个公式就可以包括角度大于90的情况啊... #include<iostream> #inclu ...
- windows10许可证即将过期怎么办
来自:http://www.xuexila.com/diannao/xitong/win7/1316897.html 会提示需要激活windows,不需要每隔两小时会重启一次,有些应用是运行不起来的. ...
- 打造android万能上拉下拉刷新框架——XRefreshView (二)
打造Android万能上拉下拉刷新框架--XRefreshView(一) 打造Android万能上拉下拉刷新框架--XRefreshView(三) 一.前言 自从上次发表了打造android万能上拉下 ...
- 用JavaScript修改Canvas图片的分辨率(DPI)
应用场景: 仓库每次发货需要打印标签, Canvas根据从数据库读取的产品信息可以生成标签JPG, 但是这个JPG图片的默认分辨率(DPI)是72 这个DPI太低, 导致打印出来的图片会很模糊. 修改 ...
- 使用CSS3建立不可选的的文字
下面的例子展示了在HTML5中你如何使用CSS建立不可选的文字. <!DOCTYPE HTML> <html> <head> <title>Creati ...
- linux查看当前shell的方法
这篇文章主要对比一下 source 命令执行shell文件和 ./ping.sh 这种方式执行shell文件的区别. 1. source ping.sh 这个是在当前的shell 中执行 ping ...
- RS报内存错误XQE-ROL-0183
描述问题:RS开发了一个报表,里面涉及日期维度精细判断,还有FM里面做的权限处理,处理逻辑可能比较复杂,后面又加了一个case when的数据项结果就出现了下面的错误 下面就说一下处理方案 从字面意思 ...