一、自定义html标签属性

对于html文件中的html标签,可以自定义属性,如:

<a href="#" id="link1" action="delete">删除</a>

上面的标签a并没有action属性(也就是说w3c定义中没有给a标签定义action属性),但有href ,id 属性。

但我们一样可以给它加自己需要的属性,如这里的action。这个在很多场合下还是有用的,特别是当需要给标签来设置某些特性时。

我们看到很多的框架,如bootstrap都给html标签定了各种自定义属性。

二、获取html标签的属性

方法一:利用dom对象来获取

如: $("#link1")[0].id  ,

或   $("#link1")[0]["id"]

注意:对于自定义属性,无法利用dom对象来获取,比如 $("#link1")[0].action 是获取不到值的。可以利用下面介绍的attr方法来获取。

方法二:利用jquery对象的 attr 或 prop方法

jquery的prop方法是jquery1.6版本引入的,那什么时候使用 prop方法,什么时候使用attr方法呢?

这个还真有些区别。经过实际的测试,发现如下使用比较好。

对于标签的固有属性(也就是说w3c给该标签定义的属性),建议用prop方法。 如  var id = $("#link1").prop("id"); 获取标签a的id属性。

对于上述在html文件中静态添加的自定义属性,建议用attr方法。如  var action = $("#link1").attr("action"); 获取标签a的自定义action属性。因为经过测试发现,对于这种自定义属性,调用prop方法无法获取。如果想深入研究下,建议看下jquery的源代码就清楚了。

三、动态设置html标签的属性

我们知道,html文件的每个标签,在浏览器内存中实际对应一个dom对象。html页面开发中的Js代码实际就是对dom对象的处理。

这样我们可以利用js代码动态的来给dom对象设置属性。

也有两种方法:

第一种方法时,获取dom对象(注意不是jquery对象),如同给普通的js对象一样,给其添加或设置属性。

第二种方法,调用jquery对象的方法,给其对应的dom对象添加和设置属性。

经过测试我们发现,如果要动态添加一个新的属性,需要利用prop方法,使用attr方法是无效的。如 $("#link1").prop("mydata","demo")

如果该属性是通过在html文件中静态添加的自定义的属性,则修改其值时只能用attr方法。

如果该标签已经有某个静态添加的自定义的属性,这时用prop方法添加一个属性,则不会影响原来的静态属性。但原来的静态属性只能用attr方法去读写,而用prop方法添加的属性只能用prop方法去读写。

可以看出,attr方法和prop方法还是有很多区别的。

对于自定义属性,静态设置和动态设置有较大差别,动态添加自定义属性只能用prop方法(包括添加、读取和修改),而静态自定义属性后续的读取和修改只能用attr方法。并且静态设置的自定义属性和动态设置的自定义属性是互不干涉的。对于标签的固定属性,读写都应该用prop方法。

四、动态删除html元素的属性

对于静态自定义的html属性,可以利用jquery对象的 removeAttr 方法来删除属性,如$("#link1").removeAttr("action"); 就删除了action自定义属性。

如果是利用prop方法动态添加的自定义属性,则需要调用jquery的 removeProp方法来删除。

对于固定属性,则也需要调用jquery的 removeProp方法来删除。

五、小结

经过上面的介绍可以看出。 attr和prop方法是有区别的,并且容易混淆。这里总结下:

1、如果没有静态自定义的属性。则不管是否会动态设置固定属性或动态属性。都应该用 prop方法,删除也用removeProp方法。

2、对于静态自定义的属性,则用attr方法和removeAttr来操作。

如果同时有静态自定义属性和动态自定义属性,则使用时要小心区别。并且要注意的是,随着jquery版本的区别,prop和attr方法的含义也可能会有变化。

Jquery学习笔记: attr和 prop的区别,以及为html标签自定义属性的更多相关文章

  1. jQuery知识点:attr与prop的区别

    做项目时遇到个莫名的问题,全选的时候仅第一次有效,再次点击全选按钮是无效了,查了查原因,看到篇很不错的文章,问题出在jquery中的attr属性上,这里做下笔记. 原文链接:http://www.cn ...

  2. jquery中的attr与prop的区别,什么时候用attr,什么时候用prop

    只要有 Boolean() 属性的,简单说就是具有true 和 false 两个属性的属性,如 checked, selected 或者 disabled 使用prop(),(其实这些都是表单类的), ...

  3. Jquery学习笔记(6)--jquery中attr和prop的区别【精辟】

    jquery中attr和prop的区别 在高版本的jquery引入prop方法后,什么时候该用prop?什么时候用attr?它们两个之间有什么区别?这些问题就出现了. 关于它们两个的区别,网上的答案很 ...

  4. 【JAVAWEB学习笔记】21_多条件查询、attr和prop的区别和分页的实现

    今天主要学习了数据库的多条件查询.attr和prop的区别和分页的实现 一.实现多条件查询 public List<Product> findProductListByCondition( ...

  5. jQuery中.attr()和.prop()的区别

    之前学习jQuery的时候,学习到了两种取得标签的属性值的方法:一种是elemJobj.attr(),另一种是elemJobj.prop().而在学习JS的时候,只有一种方法elemObj.getAt ...

  6. jquery中attr和prop的区别、 什么时候用 attr 什么时候用 prop (转自 芈老头 )

    jquery中attr和prop的区别. 什么时候用 attr 什么时候用 prop   在高版本的jquery引入prop方法后,什么时候该用prop?什么时候用attr?它们两个之间有什么区别?这 ...

  7. jquery中attr和prop的区别(转)

    在网络上看到这样一篇关于jquery中attr和prop的区别文章,觉得不错,所以转载了. 在jQuery 1.6中,.attr()方法查询那些没有设置的属性,则会返回一个undefined.如果你要 ...

  8. jquery中attr和prop的区别分析

    这篇文章主要介绍了jquery中attr和prop的区别分析的相关资料,需要的朋友可以参考下 在高版本的jquery引入prop方法后,什么时候该用prop?什么时候用attr?它们两个之间有什么区别 ...

  9. tips:Jquery的attr和prop的区别

    Jquery的attr和prop的区别 描述:想做一个复选框checkbox全选的功能,当勾选全选后,将子项的复选框状态设置成一致的, 但遇到了一个问题,就是attr函数并不能改变子项的checkbo ...

随机推荐

  1. Struts2项目中使用Ajax报错

    在Struts2项目中使用Ajax向后台请求数据,当添加了json-lib-2.3-jdk15.jar和struts2-json-plugin-2.3.4.1.jar两个包时,在result中配置ty ...

  2. SAE部署Java应用

    链接地址:http://blog.csdn.net/shuixin536/article/details/9031335 SAE为开发者提供了非常宽松的开发环境,你甚至不用做任何特别定制就能将各种Ja ...

  3. [Swust OJ 794]--最近对问题(分治)

    题目链接:http://acm.swust.edu.cn/problem/794/ Time limit(ms): 1000 Memory limit(kb): 10000   Description ...

  4. js触屏事件

    js的左右滑动触屏事件,主要有三个事件:touchstart,touchmove,touchend.这三个事件最重要的属性是 pageX和 pageY,表示X,Y坐标. touchstart在触摸开始 ...

  5. Qt学习 之 多线程程序设计(QT通过三种形式提供了对线程的支持)

    QT通过三种形式提供了对线程的支持.它们分别是, 一.平台无关的线程类 二.线程安全的事件投递 三.跨线程的信号-槽连接. 这使得开发轻巧的多线程Qt程序更为容易,并能充分利用多处理器机器的优势.多线 ...

  6. Linux下同步工具inotify+rsync使用详解

    1. rsync 1.1 什么是rsync rsync是一个远程数据同步工具,可通过LAN/WAN快速同步多台主机间的文件.它使用所谓的“Rsync演算法”来使本地和远程两个主机之间的文件达到同步,这 ...

  7. cocos2dx进阶学习之CCBI文件

    在马里奥这个游戏里,我们用到了几个ccbi文件,比如蘑菇怪,马里奥等,下面是加载马里奥代码

  8. java笔记之数据类型

    java中一句连续的字符不能分开在两行中书写,如国太长可用“+”将这两个字符串连起来 文档注释是以“/**”开头,并在注释内容末尾以“*/”结束. 文档注释是对代码的解释说明,可以使用javadoc命 ...

  9. [置顶] PHP调用move_uploaded_file()提示 failed to open stream: Permission denied(Linxux环境,以Ubuntu12.04为例)

    在使用PHP上传文件之后,我们有时候还需要移动到特定的文件夹,这时候就要调用move_uploaded_file()函数,可是会出现如下错误: Warning: move_uploaded_file( ...

  10. xzzx

    创建包: CREATE OR REPLACE PACKAGE WYL_TEST_PKG_GGYW_XZZX IS -- Purpose : 公共业务-参保险种注销 --注销选择的险种,并将参保缴费信息 ...