jquery checkbox勾选/取消勾选第二次无效的问题

jquery checkbox勾选/取消勾选第二次无效的问题

Laughing
2017-06-30 / 0 评论 / 1,295 阅读 / 正在检测是否收录...
温馨提示:
本文最后更新于2020年09月26日,已超过1574天没有更新,若内容或图片失效,请留言反馈。

代码如下

$("#rdIsStop").attr('checked', result.isStop == '0' ? false : true);  

问题描述

这段代码,第一次执行的时候,没有任何问题,但是第二次以后再执行,你会发现不起作用。

问题分析

最近在iteye的新闻中看到jQuery已经更新到了1.6.1。和之前版本的最大变化是增加了.prop方法。但是.prop()方法和.attr()方法,单从字面上很难区分。在汉语中properties和attributes都有表示“属性”的意思。
下面根据这篇博文(javascript:mctmp(0);),简要翻译了.prop()和.attr()的用法:

  1. 从1.5.2升级到1.6.1
    通过介绍新方法.prop()以及.attr()方法的改变,jQuery1.6.1引起了一场关于attributes和properties之间有何区别和联系的激烈讨论。同时,1.6.1也解决了一些向后兼容性问题。当从1.5.2升级到1.6.1时,你不必修改任何attribute代码。
    下面是关于jQuery1.6和1.6.1中Attributes模块变化的描述,以及.attr()方法和.prop()方法的首选使用。然而,正如前面所述,jQuery1.6.1允许你使用.attr()方法就像以前它被使用在所有的情况中一样。
  2. 发生了什么变化
    Attributes模块的变化是移除了attributes和properties之间模棱两可的东西,但是在jQuery社区中引起了一些混乱,因为在1.6之前的所有版本中都使用一个方法(.attr())来处理attributes和properties。但是老的.attr()方法有一些bug,很难维护。jQuery1.6.1对Attributes模块进行了更新,并且修复了几个bug。
    特别提到的是,boolean attributes,比如:checked,selected,readonly和disabled在1.6.1中和1.6之前的处理相同。这意味着下面的代码:

解决办法

替换attrprop属性

$("#rdIsStop").prop('checked', result.isStop == '0' ? false : true);
0

评论 (0)

取消
  1. 头像
    Half
    Windows 10 · QQ Browser

    改好了吗博主

    回复
  2. 头像
    wokkx
    MacOS · Google Chrome

    我去你拉风

    回复