zoukankan      html  css  js  c++  java
  • jquery,checkbox无法用attr()二次勾选

    今晨,漂亮的测试妹妹提了个奇怪的bug,说我一功能checkbox时隐时现,比如第一次打开有勾选,第n次打开可能就不选了。

    想到与美女有亲密接触机会,马上鸡动起来。

    经过偶层层抽次剥茧(da da jiang you),终于知道了原因:attr()在二次选中勾选框时,失效。

    比如,如下HTML页面,一点【选中】、二点【取消选中】、三点【选中】,瞧,不行了呗。

    <!doctype html>
    <html lang="en">
    <head>
      <meta charset="utf-8">
      <title>prop demo</title>
      <style>
      img {
        padding: 10px;
      }
      div {
        color: red;
        font-size: 24px;
      }
      </style>
      <script src="https://code.jquery.com/jquery-1.10.2.js"></script>
    </head>
    <body>
     
      <input type="checkbox" checked="checked">
      <input type="checkbox">
      <input type="checkbox">
      <input type="checkbox" checked="checked">
     
    <script>
    $( "input[type='checkbox']" ).prop( "checked", function( i, val ) {
      return !val;
    });
    </script>
     
    </body>
    </html>
    1.html

    解决方案,是使用prop()替换attr()方法(在Jquery1.6以上),如下代码:

    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8">
    <title>Attr checked</title>
    <script type="text/javascript" src="./js/jquery-1.11.2.js"></script>
    <script type="text/javascript">
        function switchChecked(flag) {
            $("input[type='checkbox']").prop('checked', flag);
        }
    </script>
    </head>
    <body>
        <input type="checkbox" />
        <input type="button" onclick="switchChecked(true)" value="选中">
        <input type="button" onclick="switchChecked(false)" value="取消选中">
    </body>
    </html>
    2.html

    关于官方文档,见:http://api.jquery.com/attr/

    或者http://api.jquery.com/prop/

    摘抄如下:“As of jQuery 1.6, the .attr() method returns undefined for attributes that have not been set. To retrieve and change DOM properties such as the checked, selected, or disabled state of form elements, use the .prop() method.”

  • 相关阅读:
    Jmeter+maven+Jenkins构建云性能测试平台(mark 推荐)
    Jenkins配置自动化构建
    跟我学Shiro---无状态 Web 应用集成
    Tomcat下部署多个项目
    Guava 教程1-使用 Google Collections,Guava,static imports 编写漂亮代码
    Spring-security-Oauth2.0
    OAuth2
    从产品角度看,怎样的知识付费才是用户要的?
    REST API 基于ACCESS TOKEN 的权限解决方案
    一个想法照进现实-《IT连》创业项目:关于团队组建
  • 原文地址:https://www.cnblogs.com/nick-huang/p/4436421.html
Copyright © 2011-2022 走看看