位置: 编程技术 - 正文

JS中attr和prop属性的区别以及优先选择示例介绍(jquery中attr和prop)

编辑:rootadmin

推荐整理分享JS中attr和prop属性的区别以及优先选择示例介绍(jquery中attr和prop),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:js的attribute,js中attr的用法,js prop attr,js里的attr,js中attribute,js中attribute和property,js中attribute,js中attribute和property,内容如对您有帮助,希望把文章链接给更多的朋友!

相比attr,prop是1.6.1才新出来的,两者从中文意思理解,都是获取/设置属性的方法(attributes和properties)。只是,window或document中使用.attr()方法在jQuery1.6之前不能正常运行,因为window和document中不能有attributes。prop应运而生了。

既然我们想知道他们两的区别,最好就看看他们的源代码,不要被代码长度所吓到,我们只看关键的几句:

prop方法代码(jQuery版本1.8.3)

attr方法里面,最关键的两行代码,elem.setAttribute( name, value + “” )和ret = elem.getAttribute( name ),很明显的看出来,使用的DOM的API setAttribute和getAttribute方法操作的属性元素节点。而prop方法里面,最关键的两行代码,return ( elem[ name ] = value )和return elem[ name ],你可以理解成这样document.getElementById(el)[name] = value,这是转化成JS对象的一个属性。

既然明白了原理是这样,我们来看看一个例子:

el.attr(“style”)输出undefined,因为attr是获取的这个对象属性节点的值,很显然此时没有这个属性节点,自然输出undefinedel.prop(“style”)输出CSSStyleDeclaration对象,对于一个DOM对象,是具有原生的style对象属性的,所以输出了style对象至于document.getElementById(“test”).style和上面那条一样

接着看:

首先用attr方法给这个对象添加abc节点属性,值为,可以看到html的结构也变了

el.attr(“abc”)输出结果为,再正常不过了el.prop(“abc”)输出undefined,因为abc是在这个的属性节点中,所以通过prop是取不到的

JS中attr和prop属性的区别以及优先选择示例介绍(jquery中attr和prop)

我们再用prop方法给这个对象设置了abc属性,值为,可以看到html的结构是没有变化的。输出的结果就不解释了。

上面已经把原理讲清楚了,什么时候用什么就可以自己把握了。

提一下,在遇到要获取或设置checked,selected,readonly和disabled等属性时,用prop方法显然更好,比如像下面这样:

显然,布尔值比字符串值让接下来的处理更合理。

PS一下,如果你有JS性能洁癖的话,显然prop的性能更高,因为attr需要访问DOM属性节点,访问DOM是最耗时的。这种情况适用于多选项全选和反选的情况。

大家都知道有的浏览器只要写disabled,checked就可以了,而有的要写成disabled = "disabled",checked="checked",比如用attr("checked")获取checkbox的checked属性时选中的时候可以取到值,值为"checked"但没选中获取值就是undefined。

jq提供新的方法“prop”来获取这些属性,就是来解决这个问题的,以前我们使用attr获取checked属性时返回"checked"和"",现在使用prop方法获取属性则统一返回true和false。

那么,什么时候使用attr(),什么时候使用prop()?1.添加属性名称该属性就会生效应该使用prop();2.是有true,false两个属性使用prop();3.其他则使用attr();项目中jquery升级的时候大家要注意这点!

以下是官方建议attr(),prop()的使用:

以下是官方建议attr(),prop()的使用:

javascript数组操作方法小结和3个属性详细介绍 最近一直在用js,好好研究了下js数组的操作,在这里总结一下。1、数组的创建vararrayObj=newArray();//创建一个数组vararrayObj=newArray([size]);//创建一个数组并

中文输入法不触发onkeyup事件的解决办法 这两天做一个需要实时监控文本框输入的功能,碰到了中文输入法无法触发onkeyup事件的恶心问题。具体表现是这样的:当监听一个input的keyup的事件的

js中一维数组和二位数组中的几个问题示例说明 js中的数组,可以存放各种数据类型(数值,字串)js中的数组没有越界,当输出的数组下标越界了,会显示undefined。js中的数组是默认动态增长的遍历

标签: jquery中attr和prop

本文链接地址:https://www.jiuchutong.com/biancheng/370171.html 转载请保留说明!

上一篇:javascript时间函数大全(js时间范围)

下一篇:javascript数组操作方法小结和3个属性详细介绍(javascript数组的方法)

  • 特别关税是多少人民币
  • 残疾人保障金的工资按实发还是应发
  • 用银行支付本月生产车间保险费820元
  • 专票不抵扣认证什么意思
  • 饭店发光板图片大全
  • 个人公积金计入什么会计科目
  • 固定资产累计折旧是什么科目
  • 2020劳务退税怎么退
  • 房地产开发公司排名
  • 建筑施工企业存货是未结转的成本对吗
  • 账目不清什么意思
  • 房地产企业土地成本分摊方法
  • 固定资产报废的账务处理例题
  • 职工福利费计提比例一般是多少
  • 不够起征点免缴的增值税如何做税务处理?
  • 收到专票未抵扣,销售方作废怎么处理
  • 重置申报清册是什么意思
  • 金三系统客户端插件在哪下载以及安装流程是怎样的?
  • 中意装饰工程有限公司怎么样
  • 法人变更了之前的支票还能进账吗?
  • 政府会计制度事业单位会计制度
  • 研发失败的项目可以加计扣除吗
  • 预收款没有发票怎么入账
  • 固定资产弃置费用预计负债
  • 权益法核算下的顺流交易
  • linux的使用场合
  • linux连接windows的服务redis
  • 冲减增值税进项税怎么处理
  • 联想e430安装win7
  • 最新专业版win10
  • php教程 ftp 函数
  • 非经营业务
  • php deprecated
  • 多对账工作的主要内容
  • 原始凭证容易出现错误的原因
  • origin2017曲线拟合
  • 勃朗峰高度
  • 专用发票密码区模糊了影响报销吗
  • 固定资产备抵科目怎么填
  • laravel sqlserver
  • 公章是否必须备案
  • 让我看看他们
  • 读懂spring源码
  • dns管理控制台在哪里
  • 金蝶暂存凭证怎样转正常凭证
  • 不能从销项税额中抵扣的进项税额为A购进货物运费准予
  • 没有原始凭证可以记账吗
  • 存货的期末余额是账面余额吗
  • 简易计税怎么算增值税
  • 闲置土地属于哪个部门
  • 固定资产提前报废当月计提折旧吗
  • 库存现金余额过大的风险
  • 土地出让金返还比例是多少
  • 当月开的发票次月预缴税款行得通吗?
  • 车保险会计怎么做分录
  • 工程施工企业外管证怎么办理
  • 结余资金结转申请怎么写
  • 空调的预计净残值是什么
  • sqlserver 类型
  • 怎么删除服务器管理的服务
  • windows10已经阻止此软件
  • win10预览版21301bug
  • xp系统explorer.exe错误
  • 搭建技巧和方法示意图
  • 如何修改win7电脑用户密码
  • win10登陆背景修改器
  • win7空间不足c盘
  • nodejs制作网站
  • dos常用命令与批处理文件
  • Unity3D游戏开发培训课程大纲
  • activity启动流程图解
  • netmon.exe
  • [置顶]马粥街残酷史
  • javascript图片切换代码
  • js面向对象编程实例
  • 曲靖市税务局领导班子
  • 大走访 方案
  • 住宿增值税专票税点是多少
  • 江苏发票认证平台app
  • 平板电脑购物
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设