先上代码:

  1. // 全选
  2. function CheckAll() {
  3. if ($("#th_checkbox").prop('checked'))
  4. $('input[name="subCheckBox"]').each(function () {
  5. $(this).prop('checked', true);
  6. });
  7. else
  8. $('input[name="subCheckBox"]').each(function () {
  9. $(this).prop('checked', false);
  10. });
  11. }

  

之前在做病理接收的页面的时候,需要做一个全选与反选的控件。在做控件的过程中,遇到一个问题,就是将代码中的prop方法换成attr方法,这个控件就失效了,改成prop方法就又可以了。以前也遇到过这个问题,当时并没有深究,这次就好好查了下资料,结合网上的例子,明确了二者之间的区别。

1.prop()

(1)对于HTML元素本身就带有的固有属性,在处理时,使用prop方法。

如果把DOM元素看成是一个普通的Object对象,这个对象在其定义时就具有一些属性(property),比如:

  1. var option =
  2. {
  3. selected:false
  4. disabled:false
  5. attributes:[],
  6. ...
  7. }

这个时候就使用prop()方法。

再举个例子:

  1. <a href="#" id="link1" action="delete">删除</a>

当需要对a标签中的href进行操作时就要用prop()方法,因为href和id是a标签的固有属性。如图:

(2)jq 1.6的官方文档建议,对值为true和false的属性使用prop()

  1. <input type="checkbox" id="check1"/>记住密码
  2. <input type="checkbox" id="check1" checked="checked"/>记住密码
  3.  
  4. $("#chke1").prop("checked");// false
  5. $("#chke2").prop("checked");// true
  6.  
  7. $("#chke1").attr("checked"); //undefined
  8. $("#chke2").attr("checked");//"checked"

$('').prop()返回的是DOM对象

2.attr()

(1) attr是从页面搜索获得元素值,所以页面必须明确定义元素才能获取值

(2)$('').attr()返回的是html对象

(3) 标签中我们自定义的属性用attr()

如:

  1. <a href="#" id="link1" action="delete">删除</a>

其中action是我们自定义的属性,这时候我们要用attr()

根据(1),再举个例子:

  1. <img src="https://www.runoob.com/images/pulpit.jpg" />

此时用 $("img").attr("width")是获取不到值的,因为页面源码中没有定义width属性,因为attr()扫描了页面源码。而用$("img").prop("width") 可返回 284。

   综上所述:

  1、当需要对页面标签自带的属性进行操作时,用prop(),其他属性用attr()

  2、当属性值只有true和false的值时,用prop()

  3、操作checkbox、radio时用prop()

  4、官方建议,如图:

 

 补充一点说明,虽然官方建议图中关于checked属性attr和prop都可以,但开发中还是用prop,因为checked对于attr可以选中但是不能取消,选中时值是不会变的,而用prop选中时值是会变的,可以选中也可以取消。

prop()和attr()我该翻谁的牌子?的更多相关文章

  1. jQuery学习之prop和attr的区别示例介绍

    1..prop( propertyName ) 获取匹配集合中第一个元素的Property的值 2. .prop( propertyName, value ) .prop( map ) .prop( ...

  2. jquery中的prop和attr比较区别

    近期和一同事争执prop和attr的区别,也查了很多,同事说它只是特性和固有属性的区别,但是我也查到了一些其他的,故此,来总结一下吧! 1.固有属性和特别属性 对于HTML元素本身就带有的固有属性,在 ...

  3. jquery的prop()和attr()

    jQuery1.6以后prop()和attr()的应用场景如下: 第一原则:只添加属性名称该属性就会立即生效应该使用prop(); 第二原则:只存在true/false的属性应该使用prop(); 设 ...

  4. 浅谈.prop() 和 attr() 的区别

    今天编码时遇到一个问题,通过后台查询的数据设置前端checkbox的选中状态,设置选中状态为.attr('checked','true');没有问题,但是当数据重新加载时,checkbox应清空即所有 ...

  5. JQUERY prop与attr差额

    1.  1-9-1之前和之后之间的差 <html> <script src="Js/jquery-1.9.0.js" type="text/javasc ...

  6. 【Jquery】prop与attr的差别

    近期因项目须要用到复选框,当中一个控制全选. // 全选 $(".ckb_all").click(function(){ if($(this).attr("checked ...

  7. 【Jquery系列】prop和attr区别

    问题描述 由于prop(property的缩写)和attr(attribute的缩写)翻译成汉语,均有“特性.属性”等意思的原因,导致大家容易混淆分不清,本篇文章将试图从英文含义,中文含义和Jquer ...

  8. prop与attr的区别

    与prop一样attr也可以用来获取与设置元素的属性. 区别在于,对于自定义属性和选中属性的处理. 选中属性指的是 checked,selected 这2种属性 1. 对于自定义属性 attr能够获取 ...

  9. jQuery 选择器 prop() 和attr()

    Day30 jQuery 1.1.1.1 什么是jQuery? n jQuery是javaScript的前端框架.对常见的对象和常用的方法进行封装,使用更方便. 它兼容CSS3,还兼容各种浏览器.文档 ...

随机推荐

  1. ansible2.4安装和体验

    欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...

  2. 以太坊blockchain源码分析

    blockchain关键元素 db:持久化到底层数据储存,即leveldb: genesisBlock:创始区块 currentBlock:当前区块,blockchain中并不是储存链所有的block ...

  3. 氵0x a

    从今天开始记录这些东西,希望以后自己不出现在这上

  4. swoft实现自动重启服务 转

    目的:1.上传代码后HTTP服务自动重启,不需要自己手动执行:php bin/swoft http:start2.自动重启适用于开发调试阶段,因为不能再后台运行所以在线上环境的话还是要重启http服务 ...

  5. centos8平台使用stress做压力测试

    一,安装stress: 说明:el8的源里面还没有,先用el7的rpm包 [root@centos8 source]# wget https://download-ib01.fedoraproject ...

  6. js函数工具总结

    小写字母转大写 var UP = function(s){ return s.toUpperCase().split(' ').join('_') } UP('Hedge number') 将格式为 ...

  7. 纯JS自定义网页滚动条

    前言 由于最近在公司很忙,没什么时间更新,忙中抽时间做了一个JS滚动条,因为火狐浏览器与谷歌浏览器的滚动条自定义样式过于麻烦,所以我打算自己写个方便改样式的滚动条 CSS <style> ...

  8. JS里的小细节,持续更新

    判断把值定为 false 集合 JavaScript里把 null.undefined.0.''.NaN 都视为false,而其他值一概为 true Map Map是一组键值对的结构,具有极快的查找速 ...

  9. 常用的实现Javaweb页面跳转的方式

    我们有两大种方式来实现页面跳转:1.JS(javascript):2.jsp跳转 先说jsp(金j三s胖p):1.转发:request.getRequestDispatcher("1.jsp ...

  10. 实现多Realm时,可能会出现的问题

    问题背景 在实现多Realm时,扩展了ModularRealmAuthenticator 和 UsernamePasswordToken,于是在MyAuthenticationToken token ...