attr和prop
<div class="content-item active">
<table class="table">
<thead>
<tr>
<th></th>
<th>姓名</th>
<th>部门</th>
</tr>
</thead>
<tbody>
<tr>
<td><input type="checkbox" /></td>
<td>小雷</td>
<td>信息化管理部</td>
</tr>
<tr>
<td><input type="checkbox" /></td>
<td>小雷</td>
<td>信息化管理部</td>
</tr>
<tr>
<td><input type="checkbox" /></td>
<td>小雷</td>
<td>信息化管理部</td>
</tr>
</tbody>
</table>
</div>
$('.content-item').on('click','table tr',function(){
var $this=$(this);
var CheckBox=$this.find('input[type=checkbox]');
if(CheckBox.prop('checked')==true){
CheckBox.prop('checked',false);
}else{
CheckBox.prop('checked',true);
}
console.log(CheckBox.prop('checked'));
})
想要的效果是点击tr其中的复选框变换状态。
一开始用的是attr
$('.content-item').on('click','table tr',function(){
var $this=$(this);
var CheckBox=$this.find('input[type=checkbox]');
if(CheckBox.attr('checked')==true){
CheckBox.attr('checked',false);
}else{
CheckBox.attr('checked',true);
}
console.log(CheckBox.attr('checked'));
});
输出的全是 checked;
改成判断为状态checked
$('.content-item').on('click','table tr',function(){
var $this=$(this);
var CheckBox=$this.find('input[type=checkbox]');
if(CheckBox.attr('checked')=='checked'){
CheckBox.removeAttr('checked');
}else{
CheckBox.attr('checked','checked');
}
console.log(CheckBox.attr('checked'));
});
输出的是checked undefined。。。
朋友说试下prop,结果就好了。
然后搜索一下资料,目前很认同,记录一下
- 对于HTML元素本身就带有的固有属性,在处理时,使用prop方法。
- 对于HTML元素我们自己自定义的DOM属性,在处理时,使用attr方法。
像checkbox,radio和select这样的元素,选中属性对应“checked”和“selected”,这些也属于固有属性,因此需要使用prop方法去操作才能获得正确的结果。
第二大段代码中的第五行用的
CheckBox.prop('checked',false);而不是和removeAttr类似的removeProp()这是因为:window
对象或DOM元素的一些内置属性是不允许删除的,如果试图删除这些属性,将会导致浏览器产生一个错误。jQuery首先会将该属性的值赋为undefined,并忽略掉浏览器生成的任何错误信息。
所以不要使用removeProp()来删除DOM元素的本地属性checked
、selected
和disabled
。这将彻底删除对应的属性,并且,一旦删除之后,你无法再向该DOM元素重新添加对应的属性。可以使用prop()函数将其设为false
即可,例如:jQueryObject.prop("checked", false)
。
attr和prop的更多相关文章
- jquery中attr()与prop()区别
我们知道jquery中获取元素属性有两种常见的方法,一个是attr()方法,这个是用的比较多的,也是我们第一个想到的.另外一个就是prop()方法了,这个方法之前很少用到,它是jquery1.6之后新 ...
- jQuery中attr()、prop()、data()用法及区别
.attr(),此方法从jq1.0开始一直存在,官方文档写的作用是读/写DOM的attribute值,其实1.6之前有时候是attribute,有时候又是property..prop(),此方法jq1 ...
- jQuery的attr与prop
jQuery1.6中新添加了一个prop方法,看起来和用起来都和attr方法一样,这两个方法有什么区别呢?这要从HTMl 的attribute与property区别说起,attr与prop正是这两个东 ...
- 浅谈attr()和prop()
刚开始学JQ的时候 ,看到attr()和prop()这两个属性的时候感觉很迷茫,而且配合官方给出的推荐使用图: prop()可以做到的attr()完全都可以,而且做不到的attr()也可以做到.何用? ...
- jquery中attr和prop的区别、 什么时候用 attr 什么时候用 prop (转自 芈老头 )
jquery中attr和prop的区别. 什么时候用 attr 什么时候用 prop 在高版本的jquery引入prop方法后,什么时候该用prop?什么时候用attr?它们两个之间有什么区别?这 ...
- jQuery学习笔记(四):attr()与prop()的区别
这一节针对attr()与prop()之间的区别进行学习. 先看看官方文档是如何解释两者之间功能差异的: attr() Get the value of an attribute for the fir ...
- jQuery属性选择器.attr()和.prop()两种方法
在判断表单单选框是否被选中时,通常会想到使用$('#checkbox').attr('checked')来判断,但在一些情况下,你会发现这种方法并不管用,得到的是undefined. 原来jQuery ...
- jquery中dom元素的attr和prop方法的理解
一.背景 在编写使用高版本[ jQuery 1.6 开始新增了一个方法 prop()]的jquery插件进行编写js代码的时候,经常不知道dom元素的attr和prop方法到底有什么区别?各自有什么应 ...
- jQuery函数attr()和prop()的区别
在jQuery中,attr()函数和prop()函数都用于设置或获取指定的属性,它们的参数和用法也几乎完全相同. 但不得不说的是,这两个函数的用处却并不相同.下面我们来详细介绍这两个函数之间的区别. ...
- 【jQuery 区别】attr()和prop()的区别
1>>> 今天实现一个 点击更新按钮 ,可以勾选上本行的的checkbox的功能: 使用代码: /** * updateproduct.htmls 更新 产品信息 */ $(docu ...
随机推荐
- IntelliJ IDEA全文搜索很给力
- 字节流和字符流(PrintStream类和PrintWiter类)
要想输入和输出各种数据类型,通常要打印输入流PrintStream和PrintWriter.其中,PrintStream操作的是字节,PrintWriter操作的是字符. 1:PrintStream类 ...
- IOS 谓词
// 谓词 Person *person = [[Person alloc]init]; person.name = @"zhang san"; person.age = 20; ...
- 0518 Scrum项目5.0
一,组员任务完成情况 首页设计初步完成但是需要优化界面,只能简单的输出信息和在首页进行登录.界面极其简单. 鸡汤版面设计有困难,问题在于用何种形式来管理用户的数据上传,但是经过小组间的讨论确定设计方向 ...
- MVC返回JSON数据格式书写方式
返回json数据格式,多个返回值加,隔开 [Route("api/users/web")] //如果不加这个路由请这样调用:/api/users/web?schoolname=十五 ...
- 转: Oracle Form 中commit 与do_key('commit_form')区别
1.commit_form针对form上面的数据变动进行commit,对于代码中的类似update,insert语句也进行提交:如果form上面的数据变动和代码中的数据变动有冲突,最后以界面上的为准. ...
- [xampp]在Crunch Bang下安装xampp1.8.3
1.下载linux下 的xampp安装包 xampp-linux-1.8.3-5-installer.run 2.终端下, 给执行权限 sudo chmod +x ./xampp-linux-1.8. ...
- POJ - 2183 Bovine Math Geniuses
“模拟“题,运用哈希,不断地按照一定运算规律对一个结果进行计算,如果重复出现就停止并且输出该数.注意到仔细看题,这种题一定要细心! POJ - 2183 Bovine Math Geniuses Ti ...
- PHP基础班初学心得:关于网页创作
前提:本人刚参加PHP基础班培训第一天,由于之前毫无基础,分享的心得可能不规范,方法也许也"旁门左道",不能保证质量,只作自己总结学习,也希望能帮助到同样是初学者的朋友们,共同进步 ...
- OBD K线抓包 II
9141的激活过程是先发WakeUp, 然后用Link: const u8 LinkCmd9141[7] = {6,0x68,0x6A,0xF1,0x01,0x00,0xC4}; 14230的Lin ...