理一下这几个概念吧。根据jquery官网。

jquery.prop 获取匹配的元素中第一个元素特定的属性值,或者是设置多个元素的属性值。

有4个重载。

.prop(propertyName) 获取属性名对应的属性值。如果是多个的话返回第一个。如果值没有设置过或者不存在匹配的元素的话返回空(如果存在这个prop的key,比如var val=$("#div1").prop("class"),alert出来就是空)或者undefined(不存在这个prop的key。比如var val=$("#div1").prop("UnKnowPropKey") alert出val就是undefined.),而不是抛出异常。

.prop(propertyName,value) 设置对应的属性值。如果是多个的话都设置。同.attr。如果想通过这个方法来改变一个input的type属性,是会抛出异常的。

.prop(properties) 就是把要设置的几个属性的键值对放到一个object里面传进去就ok

.prop(propertyName,function(index,oldPropertyValue)) 按照文档上试了一下 ,

$("input[type='checkbox']").prop("checked", function (i,val) {
            return !val;
        });  //功能就是把checkbox的选中状态变了一下~~呵呵,又多了一种写法。如果在return上加判断,返回undefined就不改变。

接下来是.attr()

和prop很基本一样,都是4个重载。其中第三个方法,传入一个object,想改变class attribute的时候记得一定要加双引号,因为class是个关键字。

最后是.data(),感觉这个有点像winform里面控件的tag属性,存任意东西。。。

Attributes vs. Properties

C#里我是用特性和属性来区分,不晓得JQuery里面也这么说算了。

jQuery1.6 以前版本,获取某些attribute的时候会用property的值,但这有可能会引起不确定的行为表现。jQuery1.6以后,用.prop()特指获取property,.attr()特指获取attribute。

比如说 selectedIndex,tagName,nodeName,nodeType,ownerDocument,defaultChecked 和defaultSelected要用.prop来操作。在jQuery1.6以前的版本中,也可以用.attr()来获取。但这其实不是.attr的分内之事,因为这些只是property,而不是attribute。

比如有这个。<input type="checkbox" checked="checked" name="elem" />

$(elem).prop("checked") 是会随着checkbox的选中状态改变,但是$(elem).attr("checked")永远是checked 或者 undefined。

尽管如此,attr方法里面写checked 其实不是对应checked property。实际上他对应的是defaultChecked属性,这个属性只有在初始化设置checkbox的时候用的。所以,"改变"checked attribute不能改变checkbox的选中状态,但是用.prop可以。

考虑到浏览器兼容性的问题,判断一个checkbox是否被选中,用.prop()方法。

selected 和 value这两个动态的attribute也同理。(jQuery网站上是这么讲的,但是试了一下,不明白啊。。原句“The same is true for other dynamic attributes, such as selected and value”,估计是我理解错了。)

IE9 之前的浏览器如果用.prop() 来设置一些除number,string,boolean类型的DOM元素的属性值,并且没有用.removeProp()方法的话可能会引起内存泄露。[所以,设置类似object类型的属性值得时候推荐用.data()方法。原句(To safely set values on DOM objects without memory leaks, use .data());]set理解成是设置是不对的呀,因为$("#div1").data({"class":"colorfulRed"})不会改变div1的class;

jQuery.prop , jQuery.attr ,jQuery.data的更多相关文章

  1. jquery中prop,attr,data的区别

    这两天翻了jq的源码,今天看到了jq关于数据存储的几个方法,遂总结一下,和小伙伴没分享一下,哪里说的不对,还望批评指正~~~ 废话不多说,直接上代码: $(function(){ $('#div1') ...

  2. JQUERY prop与attr差额

    1.  1-9-1之前和之后之间的差 <html> <script src="Js/jquery-1.9.0.js" type="text/javasc ...

  3. 关于jQuery中的attr和data问题

    今天在使用data获取属性并且赋值时遇到一个小问题,写下来防止以后再跳坑. 在使用jQuery获取自定义属性值时,我们习惯用 $(selector).attr('data-value'); jQuer ...

  4. jquery prop和attr的区别

    jquery1.6中新加了一个方法prop(),一直没用过它,官方解释只有一句话:获取在匹配的元素集中的第一个元素的属性值. 大家都知道有的浏览器只要写disabled,checked就可以了,而有的 ...

  5. jQuery.prop() 与attr()

    1.attr()是jQuery 1.0版本就有的函数,prop()是jQuery 1.6版本新增的函数.毫无疑问,在1.6之前,你只能使用attr()函数:1.6及以后版本,你可以根据实际需要选择对应 ...

  6. jquery prop and attr

    http://www.javascript100.com/?p=877 http://blog.sina.com.cn/s/blog_655388ed01017cnc.html http://www. ...

  7. prop()、attr()和data()

    设置元素属性,用attr()还是prop()? 对于取值为true /false的属性,如 checked/selected/readonly或者disabled,使用prop(),其他属性使用 at ...

  8. 总结Jquery中获取自定义属性使用.attr()和.data()以及.prop()的区别

    一..attr()和.data()的区别: .attr()和.data()本质上属于DOM属性和Jquery对象属性的区别. 看一个例子: <!DOCTYPE html> <html ...

  9. jQuery学习之prop和attr的区别示例介绍

    1..prop( propertyName ) 获取匹配集合中第一个元素的Property的值 2. .prop( propertyName, value ) .prop( map ) .prop( ...

随机推荐

  1. windows 2008解决120天授权过期问题(亲测可用)

    https://blog.csdn.net/tladagio/article/details/80503198 最后的注册号码可以是:就是那个注册号码:5296992 4954438 6565792. ...

  2. 解决ORA-30036:无法按8扩展段(在还原表空间‘XXXX’中)

    在update一数据量很大的表时,提示“ORA-30036:无法按8扩展段” 度娘了下原因与解决办法:   1.查询了一下undo表空间的使用,发现已经超过了80% SELECT a.tablespa ...

  3. 阿里云服务器搭建SS代理教程!!!

    二.搭建教程 1.环境介绍 阿里云服务器ECS(香港): 配置:cpu 1核心.内存 1GB.出网带宽 10Mbps. 系统:CentOS 7.4 64位 2.服务器端搭建 1)使用root用户,分别 ...

  4. python生成exe文件

    安装pyinstaller pyinstaller支持python2和python3 命令行安装:pip install pyinstaller pyinstaller --icon=duoguan. ...

  5. Forward团队-爬虫豆瓣top250项目-项目总结

    托管平台地址:https://github.com/xyhcq/top250 小组名称:Forward团队 组长:马壮 成员:李志宇.刘子轩.年光宇.邢云淇.张良 我们这次团队项目内容是爬取豆瓣电影T ...

  6. Matlib

    >>> name1=input('请输入第一个名字;') 请输入第一个名字;陈汉彬 >>> name2=input('请输入第二个名字;') 请输入第二个名字;钟宇 ...

  7. Breathe me

    Help, I have done it again 帮帮我,我又做错了. I have been here many times before 哪怕这已经不是一两次了. Hurt myself ag ...

  8. 我的C#跨平台之旅(二):开发最为简单的REST API

    添加NuGet引用:Microsoft.AspNet.WebApi.Owin 在启动类启用WebApi: 添加一个Controller类,代码如下: 运行程序并访问:http://localhost: ...

  9. Docker基础知识介绍

    本节内容 1.  Docker概述 2.  Docker的安装 3.  Docker基本使用 4.  Docker相关命令汇总 5.  Docker概念理解 一  Docker概述 Docker是什么 ...

  10. Redis 配置内容总结

    命令 Redis 的配置文件位于 Redis 安装目录下,文件名为 redis.conf. 你可以通过 CONFIG 命令查看或设置配置项. (1)config get config_setting_ ...