prop 和 attr 中一些羞羞的事情
引言
前几天做一个迷你京东小项目的时候涉及到一个全选的小功能,一开始用的是 attr
,但是效果完全不是自己想要的,当商品按钮点击过一次后,attr
就无法对其状态进行更改,最后谷歌了一番发现需要用 prop
来代替。虽然效果问题解决了,但是自己还是想弄懂 prop
和 attr
的区别.
版本使用不同
遇到问题我一般先会去查相关的官方文档,可在 jq 的 api 中文文档中没有发现有价值的东西,只是发现适用的版本和概念有所轻微的不同。
attr
: 设置或返回被选元素的属性值.版本:1.0
prop
: 获取在匹配的元素集中的第一个元素的属性值。版本:1.6+
从概念中发现操作的对象和使用也好像基本相同,然后带着疑惑去进行了一番实验并去查阅了一些相关资料
示例代码
···
<table>
<thead>
<tr><input type="checkbox" class="checkAll">全选</tr>
</thead>
<tbody>
<tr><input class="item" type="checkbox">单选</tr>
<tr><input class="item" type="checkbox">单选</tr>
<tr><input class="item" type="checkbox">单选</tr>
<tr><input class="item" type="checkbox">单选</tr>
<tr><input class="item" type="checkbox">单选</tr>
<tr><input class="item" type="checkbox">单选</tr>
</tbody>
</table>
```
$('.checkAll').click(function() {
$('.item').attr('checked', this.checked);
});
问题描述
当全选按钮选中时单选按钮全部选中,当全选按钮不选中时单选按钮全部不选中,只点全选按钮时,反复几次都没问题,但是要是点击了其中一个单选按钮,那这个单选按钮就不会在像其它单选按钮一样跟随全选按钮的状态的改变而改变。
attr 和 prop 的本质
attr
是 attribute
的缩写,prop
是 property
的缩写,都有属性的意思,只不过 attr
是操作 html 文档节点属性,prop
是操作 js 对象属性. attr
在 js 中使用的是 setAttribute
和 getAttribute
而 prop
直接使用原生 js 的 element[value]
和 element[value]=key
。
attr 和 prop 的区别
attr
设置的属性值只能是字符串类型,如果不是字符串类型,也会调用其 toString()
方法,将其转换成字符串类型。
prop
设置的属性值可以包括数组和对象在内的任意类型
有关布尔值的属性
1.6 之后, attr
返回的也是字符串类型, 选中或禁用直接返回 checked
,selected
,disabled
。否则返回undefined
。解决我问题的关键就是下面一句话
jQuery 认为:attribute 的 checked、selected、disabled 就是表示该属性初始状态的值,property 的 checked、selected、disabled 才表示该属性实时状态的值(值为 true 或 false)。
当涉及到 boolean 值时,比如 checkbox
这样的,有 true
和 false
这样的布尔值的元素属性,attributes
在页面加载的时候就被设置,并且一直保持初始值,而 properties
则存储着元素属性的当前值。
所以当我没有点击单选按钮的时候,它就是没被用户点击过的浏览器刚加载出来的初始状态,此时可以通过 attr
去设置并操控,当有用户点击的时候,当前按钮就不是初始状态,attr
自然也就无法操控。
原文地址:https://segmentfault.com/a/1190000014788155
prop 和 attr 中一些羞羞的事情的更多相关文章
- jquery1.6中的.prop()和.attr()异同
jquery jQueryHTML5JavaScript浏览器ITeye 最近在iteye的新闻中看到jQuery已经更新到了1.6.1.和之前版本的最大变化是增加了.prop方法.但是.prop( ...
- jQuery中prop和attr区别
问题 今天给一个button加onclick事件,由于最后button根据需要转成字符串,因此不能使用jQurey.click(),只能给button添加onclick属性的方式. 于是,$butto ...
- jQuery中的prop和attr区别
最近在做一个项目用jq时发现一个问题 在谷歌中可以正常出效果 但是在火狐中就是不行 就是这个prop和attr 之前用的是attr方法 但是在火狐中不出效果 于是特意看了两者的区别 主要 ...
- jquery中prop和attr的区别
jquery中prop和attr的区别 prop: prop(name|properties|key,value|fn) **概述** 获取在匹配的元素集中的第一个元素的属性值. 随着一些内置属性的D ...
- Jquery学习笔记(5)--jquery1.6中的.prop()和.attr()异同
jquery1.6中的.prop()和.attr()异同 最近在iteye的新闻中看到jQuery已经更新到了1.6.1.和之前版本的最大变化是增加了.prop方法.但是.prop()方法和.attr ...
- jquery中的prop和attr比较区别
近期和一同事争执prop和attr的区别,也查了很多,同事说它只是特性和固有属性的区别,但是我也查到了一些其他的,故此,来总结一下吧! 1.固有属性和特别属性 对于HTML元素本身就带有的固有属性,在 ...
- JQuery中的prop和attr
prop和attr都可以用来获取并改变对象的属性, 对于HTML元素本身就带有的固有属性,在处理时,使用prop方法. 对于HTML元素我们自己自定义的DOM属性,在处理时,使用attr方法. 栗子: ...
- java:JQuery(声明,JQ和JS对象的区别,prop,attr,addClass,offset,trigger,dblclick和change事件,hide,show,toggle,slideUp,slideDown,slideToggle,三种选择器,标签的获取,三张图片的放大与缩小)
1.JQuery: jQuery是一个快速.简洁的JavaScript框架,是继Prototype之后又一个优秀的JavaScript代码库(或JavaScript框架).jQuery设计 的宗旨是“ ...
- jQuery学习之prop和attr的区别示例介绍
1..prop( propertyName ) 获取匹配集合中第一个元素的Property的值 2. .prop( propertyName, value ) .prop( map ) .prop( ...
随机推荐
- php安装的扩展php -m可以看到,但是phpinfo()看不到,php-fpm关闭了重新打开还是不行?
问答 问答详情 php安装的扩展php -m可以看到,但是phpinfo()看不到,php-fpm关闭了重新打开还是不行? centos apache linux html php 3.2k 次浏 ...
- Microsoft函数调用约定
Microsoft函数调用约定 对于所有调用共有的约定:ebx.ebp.esi.edi都是calle-save,即由被调用的函数负责它们的保存(如果被调用函数用到了这些寄存器的话) 先看函数调用发生了 ...
- UOJ228 简单数据结构练习题
Description 传送门 维护一个数列, 有以下操作: 对[l,r]同时加上x 把[l,r]开根后下取整. 查询[l,r]之和 n,m \(\leq\)$ 100000, $\(a_i,x \l ...
- Hdu 3488 Tour (KM 有向环覆盖)
题目链接: Hdu 3488 Tour 题目描述: 有n个节点,m条有权单向路,要求用一个或者多个环覆盖所有的节点.每个节点只能出现在一个环中,每个环中至少有两个节点.问最小边权花费为多少? 解题思路 ...
- VECTOR中pair的排序
vector中pair的排序方法 首先定义一个vector vector<pair<int,char> >vec; 调用排序函数sort sort(vec.begin(),ve ...
- 题解报告:hdu 1098 Ignatius's puzzle
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1098 题目中文是这样的: 伊格内修斯在数学上很差,他遇到了一个难题,所以他别无选择,只能上诉埃迪. 这 ...
- magento 自建插件通道服务
首先建立如下的目录结构 在channel.xml中如此写上 <channel> <name>local</name> <uri>http://local ...
- 彩色模型 分类: 图像处理 Matlab 2015-01-08 20:43 364人阅读 评论(0) 收藏
彩色模型(又称彩色空间或彩色系统)是描述色彩的一种方法,本质上,彩色模型就是坐标系统和子空间的规范,系统中的每种颜色由单个点来表示.下面介绍两种最常用的彩色模型. 一.RGB彩色模型: RGB模型是最 ...
- [C#基础知识系列]专题十:全面解析可空类型[转]
原文链接 主要内容: 1:空合并操作符(?? 操作符) ??操作符也就是"空合并操作符",它代表的意思是两个操作数,如果左边的数不为null时,就返回左边的数,如果左边的数为nul ...
- hdu 6011 Lotus and Characters 贪心
http://acm.hdu.edu.cn/showproblem.php?pid=6011 先把数字从小到大排好,比如是-6.3.4这样, 然后处理出后缀和,当后缀和 <= 0的时候马上停止就 ...