jquey中data的賦值,取值問題


1、data取值

data取值跟attr取值第一次取值流程都是相同的都是去dom中獲得值,但是第一次data多了一個操作那就是把該對象保存到內存中,也就是如果再取值的話,不是從dom中獲得而是從內存中讀取。就是在獲得值之前重新修改了dome的值了,那么data讀到的還是之前的數據

代碼如下:

<div class="item" data-time="123">中國</div>
    <script type="text/javascript">
         $(".item").data("time");
         $(".item").attr("data-time","tom")
         console.log($(".item").data("time"));   //獲得值為 123
         console.log($(".item").attr("data-time")); //獲得值為 tom
    </script>

2、data賦值問題

data賦值不會操作dom節點,而是,在內存中生成該對象,並給該對象中的屬性賦值,增加或是修改。而不會在dom上顯示該數據

    <div class="item" data-time="123">中國</div>
    <script type="text/javascript">
         $(".item").data("time","cccc");
         console.log($(".item").data("time"));   //獲得值為 cccc
         console.log($(".item").attr("data-time")); //獲得值為 123
    </script>
<!--     

        頁面中的dom中顯示的是
        <div class="item" data-time="123">中國</div> 
-->

總結是

1、attr屬性取得都是dom上的值,不論data怎么賦值,或者是生成一個屬性,那么attr都不會獲得,因為data賦值或者修改都基於js內部對象的,而attr是基於dom的,但是第一次取值的時候data跟attr相同

2、attr返回的都是String對象,而data返回是轉換的也就是說如果是123那么data返回的就是一個nubmer而attr返回都永遠都是String

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM