🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
>[danger]attr与prop的区别 prop会重新渲染html,而attr(这个通常用来操作自定义属性)不会 prop只能获取自己设置的自定义属性的值 不能获取其他自定义属性的值 prop设置的自定义属性不会在元素上显示 他们两设置的值相互都不能获取到 prop() 方法和 attr() 方法相似,都是用来获取或设置元素的 HTML 属性的,不过两者也有着本质上的区别。 jQuery 官方建议:具有 true 和 false 这两种取值的属性,如 checked、selected 和 disabled 等,建议使用 prop() 方法来操作,而其他的属性都建议使用 attr() 方法来操作。 ![](https://img.kancloud.cn/0e/bf/0ebf0ddbb10566a4e2d97f2c9e6cae2a_528x288.png) ``` <a href=";" data-demo="hello" >测试</a> //取到 "demo" var skno = $('a').data('demo'); //取到 "SK60007371" var skno1 = $('a').attr('data-demo'); $('a').data('demo', '123456'); $('a').attr('data-demo', '123456'); ``` 需要注意的是,用 data 方法赋值后,并不会改变元素中 data-demo 的值。用 data 方法取值,也只是取得页面初始化时属性的值,当元素属性值改变时,data 获取的值也还是改变前的。 所以,在 js 中,要保证数据同步,一定要用 attr() 获取。当属性值是对象时,要用 data 获取 data()本质是设置获取缓存,但是没有设置是他会取找对应的自定义属性值为默认值,后面就没什么关系了 ![](https://img.kancloud.cn/e5/74/e57497aa2090db5f89056d8824486912_637x401.png)