zoukankan      html  css  js  c++  java
  • jq 中input为radio设置选中状态,attr问题

    现象:attr设置checked值显示不正确

    $("input[type=radio][value='']").attr("checked","checked");
    $("input[type=radio][value='']").attr("checked",true);

    两者在html上的修改一致,但是页面上的显示没有更新。

    <input type="radio" name="reporttype" value="" checked="checked">

    测试改为 

     $("input[type=radio][value='']").prop("checked",true);

    相当于  

    $("input[type=radio]")[0].checked=true;

    设置checked后html改为:

    页面显示也正确。

    原因:这里涉及两个概念  特性(attribute) 和属性(Property)。

    attribute是dom节点自带的属性,如id,class,自定义放在html 标签内的属性(customattr)等,放在dom对象的attributes属性中,这个属性的类型是NamedNodeMap。

    property是dom元素作为对象,其附加的内容,如childnodes,firstchild等,直接在对象上,部分attribute特性如id,checked,disabled等会被添加到元素对象上,作为dom属性。

    用.attr()操作 一般只更改了 attributes中的属性值,如果这个属性是dom元素的一个特性属性的话,没有改到对应的特性,特性是内部实现某些功能的参照,比如 radio 的checked 特性未改,显示的选择状态也没有及时更新到。

    注:对于当前dom元素有的特性使用.prop()进行操作,而对于没有对应特性的普通属性使用.attr()操作就可以了。

    留坑~~有空再查看jq源码

  • 相关阅读:
    dynamic 转换实体类
    泛型的简单使用
    winfrom嵌入word
    echart睡眠后台代码,
    echart实现睡眠前台代码
    Mysql时间加一天
    一道关于面向对象面试题所引发的血案(阿里)
    一道面试题让你彻底掌握JS中的EventLoop(头条)
    对象(数组)的深克隆和浅克隆(头条)
    BAT笔试题中几道关于堆栈内存和闭包作用域的题
  • 原文地址:https://www.cnblogs.com/xiaozhuyuan/p/7542158.html
Copyright © 2011-2022 走看看