纠结attr(),prop()
刚刚看博客无意中看到attr()和prop()的区别,回头就去翻了一下手册,感觉手册上写的过于简单,不能很清晰的分辨出两者的区别,两者的参数用法都是高度相似。
attr():设置或返回被选元素的属性值。
prop():获取在匹配的元素集中的第一个元素的属性值。
这是手册上的概述,关于具体的参数在这儿就不一一列举出来了。
看完实例以后感觉还是没有太搞明白两者是什么区别,随即去百度上看看了一下芈老头(芈字害我试了好久才打出来,幸好之前有个芈月传)的博客,上面是这么写的。
关于它们两个的区别:
- 对于HTML元素本身就带有的固有属性,在处理时,使用prop方法。
- 对于HTML元素我们自己自定义的DOM属性,在处理时,使用attr方法。
看完以后感觉还是云里雾里的,迷迷糊糊,随后看到博客后面的评论对他的观点进行了一个很好的解释,是这么写的:
(1) <a href="#" target="_self" class="btn">百度</a>
alert($("a").prop("class")); -----------》btn
alert($("a").attr("class")); -----------》btn
虽然说attr()是获取自定义属性,prop是获取固有属性但是其实attr()也能获取到固有的属性,真正能够体现这俩的不同的是自定义属性上的获取和在获取标签中没有显示设置的固有属性的情况中,两种情况分别在(2)和(3)中解释。
a标签里面的 href,target,class都是固有属性所以都可以获取,自然不存在undefined的情况。
(2)在 (1)的基础上加个自定义的属性试试
<a href="#" target="_self" class="btn" action="#" >百度</a>
alert($("a").prop("action")); -----------》undefined
alert($("a").attr("action")); -----------》#
在这里你就可以看到prop是不能够获取自定义属性的。
(3)楼主的最后一个例子怎么说呢,我觉得是在解释什么是固有属性,我将(1)种的class属性去掉。
<a href="#" target="_self" ">百度</a>
alert($("a").prop("class")); -----------》 空
alert($("a").attr("class")); -----------》undefined
prop是固有属性,固有属性的意思是它知道你有这个属性,你没有写,它也知道,只是你没去设置而已。你没有设置它就返回默认值,楼主的的那个例子中checked的默认值就是false,对于class来说你没设置默认值应该就是为空。
attr是自定义属性,你不在标签里写它就不知道,所以返回的是undefined。
我觉得关键在于最后的几句话
今天就先到这儿以后碰到了记得这么个问题就ok了。
纠结attr(),prop()的更多相关文章
- jquery之 css()方法。用法类似的有attr(),prop(),val()
[注]attr(),prop(),val()的用法结构和css()一致,可参考 css()函数用于设置或返回当前jQuery对象所匹配的元素的css样式属性值. 该函数属于jQuery对象(实例).如 ...
- 关于jQuery中attr(),prop()的使用
注意:什么时候使用attr(),什么时候使用prop()?1.添加属性名称该属性就会生效应该使用prop();2.是有true,false两个属性使用prop();3.其他则使用attr(); 以下是 ...
- attr(),prop()二者区别和最佳实践
attr(),prop()二者区别和最佳实践 最近使用到attr()来获取自定义属性值,我印象中是有一个方法可以获取到自定义属性值,进而我又想到了另一个方法prop(). 查看了手册发现并没有对二者 ...
- JQUERY attr prop 的区别 一个已经被淘汰
在做jquery 全选 全不选的项目中, 1..prop( propertyName ) 获取匹配集合中第一个元素的Property的值 2. .prop( propertyName, value ) ...
- query attr prop区别
大家都知道有的浏览器只要写disabled,checked就可以了,而有的要写成disabled = "disabled",checked="checked", ...
- jQuery.attributes源码分析(attr/prop/val/class)
回顾 有了之前的几篇对于jQuery.attributes相关的研究,是时候分析jQuery.attr的源码了 Javascript中的attribute和property分析 attribute和p ...
- attr prop jquery关于获取DOM属性值的两个函数
$('#domid').attr('acitve') $('#domid').prop('checked') // 在使用JQUERY获取DOM元素的属性时,有两个函数,attr 和 prop < ...
- jquery,attr,prop,checkbox标签已有checked=checked但是不显示勾选
最近在做项目的过程中碰到了这样的一个问题:在使用bootstrap模态框的过程中,在模态框中有一个checkbox标签,一开始是为选中的,当点击触发模态框按钮,选中chcekbox时,会显示勾选,这个 ...
- JQ attr prop 区别
解决方法:使用prop属性代替attr属性 一.Attr除 checked, selected, 或 disabled状态属性外,其余的属性均可用attr()设置和修改.$("img&quo ...
随机推荐
- 使用VS2012调试ReactOS源码
目录 一 下载并安装VS2012 二 下载并安装WDK80 三 下载ReactOS0315源码 四 下载并安装RosBE211 五 用RosBE命令行编译ReactOS源码 六 用VS2012编译nt ...
- iOS:iOS中的多控制器管理
iOS中的控制器有三种创建方式: 1.通过storyboard创建 UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@" ...
- python【4】-函数
一. 定义函数 定义一个函数要使用def语句,依次写出函数名.括号.括号中的参数和冒号:,然后,在缩进块中编写函数体,函数的返回值用return语句返回.如果没有return语句,函数执行完毕后也会返 ...
- ElasticSearch部署安装
测试版本:elasticsearch-5.1.1 1.Windows环境下安装(win10系统) 1)解压elasticsearch-5.1.1.zip. 2)执行elasticsearch.bat启 ...
- CheckLogin
# encoding: utf-8 # Creator:耿亚月 Creation time:2017-1-1 # Modifier:耿亚月 Modification time:2017-1-2 #fi ...
- android 照片地理位置 demo
类似qq空间的的带位置的水印相机实现: 基于高德地图的API实现获取地理位置信息.注意修改Androidmanifest.xml文件中的key.去高德地图api去申请自己的key. 现在网上搜索到的通 ...
- ROS语音交互——科大讯飞语音合成TTS(二)
之前我用过科大讯飞的语音包,为了记录一下我重新使用一下 首先注册科大讯飞账号及应用,以后每个下载的在线使用SDK都是以此账户ID登录讯飞语音服务器. 下载科大讯飞在线合成包. $ unzip Linu ...
- 一般处理程序获取WEB窗体创建的验证码需要实现session相关接口
如下: using System.Web.SessionState; using ASPNETAJAXWeb.ValidateCode.Page; public class CheckLogin : ...
- golang实现随机数
package main import ( "fmt" "time" "math/rand" ) func main() { r := ra ...
- 百度前端技术学院2015JavaScript基础部分-BOM
5.1 任务描述 实现以下函数 // 判断是否为IE浏览器,返回-1或者版本号 function isIE() { // your implement } // 设置cookie function s ...