• jQuery学习之prop和attr的区别


    1.attr() :默认保存的是浏览器的初始值  prop()保存的是更新的值

    2.下面的是首用法,但是.attr()方法可以运行在所有的attributes情况下。

     注意:一些DOM元素的properties也被列在下面,但是仅运行在新的.prop()方法中


    jQuery学习之prop和attr的区别

    .prop()方法应该被用来处理boolean attributes/properties以及在html(比如:window.location)中不存在的properties。其他所有的attributes(在html中你看到的那些)可以而且应该继续使用.attr()方法来进行操作。

    3.

    注意事项

    1、如果通过prop()函数更改<input>和<button>元素的type属性,在多数浏览器上将会抛出一个错误,因为该属性一般不允许在后期更改。

    2、如果使用prop()函数操作表单元素的checkedselecteddisabled等属性,如果该元素被选中(或禁用),则返回true,否则(意即HTML中没有该属性)返回false

    3、prop()函数还可以设置或返回DOM元素的Element对象上的某些属性,例如:tagName、selectedIndex、nodeName、nodeType、ownerDocument、defaultChecked和defaultSelected等属性。

    4、在IE9及更早版本中,如果使用prop()函数设置的属性值不是一个简单的原始值(String、Number、Boolean),并且在对应的DOM元素被销毁之前,该属性没有被移除,则可能会导致内存泄漏问题。如果你只是为了存储数据,建议你使用data()函数,以避免内存泄漏问题。

    下面这段HTML代码为例:

    <div id="n1">
        <p id="n2" class="demo test" data-key="UUID" data_value="1235456465">CodePlayer</p>
        <input id="n3" name="order_id" type="checkbox" value="1">
        <input id="n4" name="order_id" type="checkbox" checked="checked" value="2">
    </div>

    我们编写如下jQuery代码:

    var $n2 = $("#n2");
    // prop()操作针对的是元素(Element对象)的属性,而不是元素节点(HTML文档)的属性
    document.writeln( $n2.prop("data-key") ); // undefined
    document.writeln( $n2.prop("data_value") ); // undefined

    document.writeln( $n2.prop("id") ); // n2
    document.writeln( $n2.prop("tagName") ); // P
    document.writeln( $n2.prop("className") ); // demo test
    document.writeln( $n2.prop("innerHTML") ); // CodePlayer
    document.writeln( typeof $n2.prop("getAttribute") ); // function

    // prop()设置的属性也是针对元素(Element对象),因此也可以通过元素本身直接访问
    $n2.prop("prop_a", "CodePlayer");
    document.writeln( $n2[0].prop_a ); // CodePlayer
    var n2 = document.getElementById("n2");
    document.writeln( n2.prop_a ); // CodePlayer

    // 以对象形式同时设置多个属性,属性值可以是对象、数组等任意类型
    $n2.prop( {
        prop_b: "baike",
        prop_c: 18,
        site: { name: "CodePlayer", url: "http://www.365mini.com/" }
    } );
    document.writeln( $n2[0].prop_c ); // 18
    document.writeln( $n2[0].site.url ); // http://www.365mini.com/

    // 反选所有的复选框(没选中的改为选中,选中的改为取消选中)
    $("input:checkbox").prop("checked", function(index, oldValue){
        return !oldValue;
    });

    学习链接:1. http://blog.sina.com.cn/s/blog_655388ed01017cnc.html

                  2.http://www.365mini.com/page/jquery-prop.htm  http://www.365mini.com/page/jquery-attr.htm

         3.http://www.tuicool.com/articles/3uuQRr6  

                   4.http://www.365mini.com/page/jquery-attr-vs-prop.htm

  • 相关阅读:
    .NET的JSNO 序列化跟反序列化
    SQL Server 查询分析器提供的所有键盘快捷方式(转)
    SQL Server 中WITH (NOLOCK)浅析(转潇湘隐者)
    Microsoft Dynamics CRM 2011的组织服务中的RetrieveMultiple方法(转)
    C#对多个集合和数组的操作(合并,去重,判断)
    Silverlight Telerik控件学习:主题Theme切换html教程
    VMware 11安装Mac OS X 10.10
    Android 下载网络图片注意的问题
    对下载文件是否完整的判断方法
    Android实现通用的ActivityGroup(效果类似Android微博客户端主界面),强烈建议不要再使用TabActivity
  • 原文地址:https://www.cnblogs.com/Spring-Rain/p/5537233.html
Copyright © 2020-2023  润新知