`

浅谈attr()与prop()区别

阅读更多

【前言】

    最近做项目的时候遇到了一个坑,浪费了将近一晚上的时间,原因就是有一个地方要改变checkbox的状态,当时我使用的是attr("checked", true)来状态,当时遇到的问题就是我在chrome中运行正常,但是在微信开发者工具中运行出错,无法完全得改变多选框的状态,当时一直以为是代码的问题,于是就在代码上面找问题,找了挺久,然后也修改了很多,但是最后发现还是不行。

 

【主体】

     无奈的我去查找资料,不找不知道,一找才发现,原来问题出现在这里。

     在之前的JQuery版本中,都是使用attr()来访问对象的属性,比如取一个图片的alt属性,就可以使用$(".img").attr("alt")。但是在某些时候,比如访问input的disabled属性的时候就就会有些问题。在一些浏览器里,只要写了disabled属性就可以产生效果,但是在一些浏览器上就要写disabled="disabled"才能产生效果。所以,从1.6版本开始,jQuery提供新的方法prop()来获取这些属性。使用Prop()的时候,返回值是标准属性:true/false, 比如$("checkbox").prop('disabled'),不会返回'disabled'或者“ ”,只会返回true/false。

     根据资料上的说明,我将attr("chedked", true)改成了prop("disabled", true),然后再查看效果,果然,问题解决了。这就是困扰了我一晚上的问题。

     最后总结一下哪些属性应该用attr()访问,哪些属性应该使用prop()访问:

         第一:只添加属性名称就可以使属性生效的就应该使用attr();

         第二:只存在true/false的属性应该使用prop()。

按照官方的说明,如果是设置disabled和checked这些属性,应该使用prop()方法,而不应该使用attr()方法。

知识,总是要应用在实践中才叫知识。

 

【通俗理解】

(1)prop()获取匹配的元素的属性值。

(2)这个方法是jquery1.6以后出来的,用来区别之前的.attr()方法.

(3)区别最大的一点就是:布尔型的属性,1.6以后都是用.prop()方法就好了。

(4)这个布尔型的属性,再解释一下,是属性值只有true|false的属性。

(5)还有种情况就是只添加属性名,不需要写属性值的就可以生效的也同样使用.prop()方法。比如:checked、disable这样的,其实它们说到底还是属于布尔型的属性。

          1.添加属性名称该属性就会生效应该使用prop();

          2.是有true,false两个属性使用prop();

          3.其他则使用attr();

.

分享到:
评论

相关推荐

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

    在JavaScript的jQuery库中,`attr`和`prop`都是用于获取或设置元素属性的方法,但它们之间存在一些重要的区别。这些方法的使用场景不同,理解它们的差异对于编写高效且正确的JavaScript代码至关重要。 首先,`attr`...

    jquery中attr和prop的区别分析

    总结来说,`attr` 和 `prop` 的主要区别在于: 1. `attr` 用于处理自定义属性和非固有属性,而`prop` 用于处理固有属性。 2. 固有属性(如`checked`、`selected`)使用`prop`可以获取或设置正确的布尔值,而`attr`则...

    jquery中attr、prop、data区别与用法分析

    jQuery作为前端开发中非常重要的JavaScript库,其提供的attr、prop和data方法分别用于操作HTML元素的属性,理解它们的区别与用法对于前端开发人员来说非常重要。本文将结合实例详细分析这三个方法的差异、功能、使用...

    Jquery中attr与prop的区别详解

    在jQuery中,`attr`和`prop`是两个用于获取和设置HTML元素属性的方法,但它们之间存在着重要的区别。在高版本的jQuery中,引入`prop`方法是为了更精确地处理元素的特性,特别是那些与JavaScript行为密切相关的属性。...

    jQuery操作attr、prop、val()/text()/html()、class属性

    ### jQuery操作attr和prop jQuery的attr和prop方法都是用来操作元素属性的,但它们有各自不同的使用场景和特性。在jQuery 1.6之后,对于一些布尔型属性如checked、selected、disabled等,推荐使用prop方法而不是...

    jQuery的attr与prop使用介绍

    jQuery1.6中新添加了一个prop方法,看起来和用起来都和attr方法一样,这两个方法有什么区别呢?这要从HTMl 的attribute与property区别说起,attr与prop正是这两个东西的缩写

    jQuery checkbox选中问题之prop与attr注意点分析

    本文将重点分析在火狐(Firefox)浏览器下,使用jQuery的prop和attr方法来设置checkbox选中状态的不同表现和解决方法。 首先,需要了解的是,在jQuery中,attr方法是用来获取或设置HTML属性的值,而prop方法则是...

    jquery中prop()方法和attr()方法的区别浅析

    在jQuery中,`attr()`和`prop()`方法都是用来处理元素的属性(attributes)和特性(properties),但它们之间存在一些关键的区别。了解这些差异对于编写高效、无误的JavaScript代码至关重要。 首先,属性...

    jquery prop的使用介绍及与attr的区别

    本文将详细介绍`prop()`的使用以及它与`attr()`的区别。 首先,`prop()`方法主要用于处理那些与DOM元素状态或行为相关的属性,比如`checked`、`selected`、`disabled`等。这些属性的值通常不是字符串,而是布尔值或...

    python学习-19-dyn-attr-prop.zip

    Python是一种解释型的、面向对象的、带有动态语义的高级程序设计语言。它是由荷兰人吉多·罗萨姆于1989年发布的,第一个公开发行版发行于1991年。Python注重解决问题的方法,而不是语法和结构。...

    jQuery获取attr()与prop()属性值的方法及区别介绍

    在jQuery的高版本中,推荐使用 `prop()` 来处理那些与元素交互密切相关的属性,而 `attr()` 更适合处理样式、链接、数据等非状态属性。正确地使用这两个方法,可以避免兼容性问题,并确保代码在各种浏览器环境下都能...

    详谈jQuery中使用attr(), prop(), val()获取value的异同

    在获取`value`属性时,`val()`的行为与`prop()`非常相似,都会返回元素当前的值,而非初始值。因此,无论是用户修改后的值还是初始值,`val()`都会正确地反映出输入框的实际内容。 总结起来,对于获取input元素的...

    jquery获取自定义属性(attr和prop)实例介绍

    与`attr()`不同的是,`prop()`在处理布尔值属性时,直接传入`true`或`false`即可切换其状态。 在某些情况下,`attr()`和`prop()`的行为是相似的,但在处理特定类型属性时,如表单元素的状态属性,推荐使用`prop()`...

    关于jquery中attr()和prop()方法的区别

    在jQuery中,`attr()` 和 `prop()` 都是用来处理元素属性的方法,但它们之间存在重要的差异,这些差异主要体现在处理DOM元素的状态和属性值上。以下是对这两个方法的详细解释和对比: **attr() 方法** `attr()` ...

    jQuery中attr()与prop()函数用法实例详解(附用法区别)

    主要介绍了jQuery中attr()与prop()函数用法,结合实例形式详细分析了attr()与prop()函数的使用技巧与相关注意事项,并附带了attr()与prop()函数用法的区别,需要的朋友可以参考下

    jquery判断复选框选中状态以及区分attr和prop

    `prop()`方法则是在jQuery 1.6引入的,用于获取或设置元素的固有属性,这些属性是与元素的行为和状态紧密相关的。例如,对于复选框,`prop('checked')`会返回一个布尔值,表示复选框是否被选中。如果复选框被选中,`...

Global site tag (gtag.js) - Google Analytics