位置: 编程技术 - 正文

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数组的方法)

  • 不得从销项税中抵扣的进项税大白话
  • 民营医院增值税优惠政策有哪些
  • 成本核算需要哪些基础工作
  • 计提当月社保会计分录
  • 同一投资主体内部所属企业之间土地,房屋权属的划转
  • 资产负债表中存货项目金额怎么算
  • 资产负债表长期借款包括哪些
  • 未取得发票的收入怎么做账
  • 环评费用包括哪些
  • 小企业研发费用科目代码多少合适
  • 支付保安公司的钱违法吗
  • 私立幼儿园需要转学籍吗
  • 已开专票在哪里查询
  • 财务抄税怎么抄
  • 存款利息收入是免税还是不征税
  • 分期付款购入原材料怎么做账
  • 月不超过10万,季不超过30万免什么税
  • 投资收益亏损
  • 鼠标玩游戏飘怎么回事
  • 公司罚款怎么写
  • 保险费做什么会计分录
  • 建筑公司可以开劳务吗
  • 为什么iphone手机闹钟定了不响
  • 支付宝安全控件是什么
  • PHP:session_save_path()的用法_Session函数
  • 小规模纳税人多少钱不用交税
  • dgservice.exe是什么软件
  • echarts地图不同地区设置不同的颜色
  • 应交增值税减免税款包括什么
  • 蒙特勒和日内瓦的关系
  • 项目竣工决算审计与工程结算审核的区别是
  • 华侨是否适用个人所得税
  • 完美解决在ThinkPHP控制器中命名空间的问题
  • 2023新版拳击航母
  • 鲁棒性分析方法
  • 哈希表散列函数
  • 税号一般多少位数字
  • 发票必须在什么时候开
  • 长期股权投资的账面价值怎么计算
  • 公司注册资金表格模板
  • 以个人名义和公司名义入股的利弊
  • 银行开出的承兑怎么兑现
  • 缴纳印花税需要带公章吗
  • sqlserver 死锁查询
  • 什么时候计提所得税费用会计分录
  • 三险一金的专项扣除标准
  • 经营费用包括工资吗
  • sqlserver避免死锁
  • 预收账款挂账多长时间必须确认收入
  • 装修费用账务怎么处理
  • 制造费用期末有余额在借方
  • 加油站充值套路
  • 特殊销售方式下销售额的确定
  • 道路交通事故中施救费应如何处理?
  • 汽车租赁的会计处理
  • 研发支出的定义
  • 公司控股的子公司 法人能被追加吗
  • 福利费的范畴
  • 所有者权益是什么意思
  • win10 mobile 预览10240
  • 微软edge浏览器在哪
  • msi安装错误代码2503
  • linux系统中的用户分为哪几类
  • win7还是win8好用
  • 微软手机
  • linux修改软件源
  • Mac系统修复怎么进入
  • 内存 服务器
  • win8开始菜单全屏怎么调回去
  • Linux网络抓包工具
  • 怎么放大linux字体
  • 微信小程序列表显示
  • nodejs使用场景
  • css示范例子
  • python的iloc
  • python5.7汉诺塔
  • 代收的款项支付需不需要开发票
  • 国企巡查都巡查哪些内容
  • 教育附加费网上缴费
  • 小规模公司每月0申报怎么操作
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设