1. <ul id="0c1fb"></ul>

      <noscript id="0c1fb"><video id="0c1fb"></video></noscript>
      <noscript id="0c1fb"><listing id="0c1fb"><thead id="0c1fb"></thead></listing></noscript>

      99热在线精品一区二区三区_国产伦精品一区二区三区女破破_亚洲一区二区三区无码_精品国产欧美日韩另类一区

      RELATEED CONSULTING
      相關(guān)咨詢
      選擇下列產(chǎn)品馬上在線溝通
      服務(wù)時間:8:30-17:00
      你可能遇到了下面的問題
      關(guān)閉右側(cè)工具欄

      新聞中心

      這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
      jQuery緩存操作-cache數(shù)據(jù)
      jQuery從1.2.3開始提供了data/removeData方法用來存儲/刪除數(shù)據(jù)。1.6.1代碼片段

      jQuery.extend({
          cache: {},
       
          // Please use with caution
          uuid: 0,
           
          ...
           
      });

      即給jQuery添加了靜態(tài)字段/方法,有jQuery.cache/jQuery.uuid/jQuery.expando等。下面分別介紹


      jQuery.cache 空對象,用來緩存。它的結(jié)構(gòu)較復(fù)雜。


      jQuery.uuid 自增唯一的數(shù)字。


      jQuery.expando 字符串,使用Math.random生成,去掉了非數(shù)字字符。它作為HTMLElement或JS對象的屬性名。
          
      expando: "jQuery" + ( jQuery.fn.jquery + Math.random() ).replace( /\D/g, "" ),


      jQuery.noData JS對象,對于指定的HTMLElement禁用data方法。如embed、applet。


      jQuery.hasData 用來判斷HTMLElement或JS對象是否具有數(shù)據(jù)。返回true或false。即如果調(diào)用了jQuery.data方法添加了屬性,則返回true。

      aa



      jQuery.acceptData 用來判斷該元素是否能接受數(shù)據(jù),返回true或false。在jQuery.data中使用。

      jQuery.data 這是提供給客戶端程序員使用的方法,它同時是setter/getter。

      1,傳一個參數(shù),返回附加在指定元素的所有數(shù)據(jù),即thisCachejQuery.data(el); // thisCache

      2,傳二個參數(shù),返回指定的屬性值jQuery.data(el, 'name');

      3,傳三個參數(shù),設(shè)置屬性及屬性值jQuery.data(el, 'name', 'jack');jQuery.data(el, 'uu', {});
      4,傳四個參數(shù),第四個參數(shù)pvt僅提供給jQuery庫自身使用。即jQuery._data方法中傳true。因為jQuery的事件模塊嚴(yán)重依賴于jQuery.data,為避免人為的不小心重寫在這個版本中加入的。

      jQuery.removeData 刪除數(shù)據(jù)。

      上面是jQuery數(shù)據(jù)緩存模塊的整體概述,下面詳細(xì)說下jQuery.data方法。jQuery.data為兩種對象提供緩存:JS對象和HTMLElement
          
      // 為JS對象提供緩存
      var myObj = {};
      $.data(myObj, 'name', 'jack');
      $.data(myObj, 'name'); // jack
       
      // 為HTMLElement提供緩存



      內(nèi)部實現(xiàn)上也是有區(qū)別的,


      1,為JS對象提供緩存時,直接將數(shù)據(jù)保存在JS對象上。cache為JS對象。此時會偷偷的給JS對象添加個屬性(類似于jQuery16101803968874529044),屬性值也是個JS對象。舉例說明

      var myObj = {};
      $.data(myObj, 'name', 'jack');
      console.log(myObj);

      myObj的結(jié)構(gòu)如下
      myObj = {
          jQuery16101803968874553435 : {
              name : 'jack'
          }
      }


      jQuery16101803968874553435 這個字符串在data內(nèi)部命名為id(注意并非HTMLElement元素的id),它實際就是jQuery.expando。上面已經(jīng)提到它是在jQuery.js引入到頁面后隨機(jī)生成的。

      2,為HTMLElement提供緩存時,卻不會直接保存在HTMLElement上。而是保存在jQuery.cache上。cache為jQuery.cache。此時先給HTMLElement添加屬性(類似于jQuery16101803968874529044),屬性值為數(shù)字(1,2,3遞增)。即只將一些數(shù)字保存在了HTMLElement上,不會直接將數(shù)據(jù)置入。這是因為IE老版本中可能會存在內(nèi)存泄露危險。而HTMLElement如何與jQuery.cache建立聯(lián)系呢? 還是id。剛剛提到屬性值數(shù)字就是id。舉例說明



      el 上添加了屬性jQuery.expando,值為id,這個id是從1開始遞增的。而id又作為jQuery.cache的屬性(key)。這樣就HTMLElement就與jQuery.cache建立了聯(lián)系。如圖


      創(chuàng)新互聯(lián)是網(wǎng)站建設(shè)技術(shù)企業(yè),為成都企業(yè)提供專業(yè)的成都網(wǎng)站設(shè)計、做網(wǎng)站、成都外貿(mào)網(wǎng)站建設(shè)公司,網(wǎng)站設(shè)計,網(wǎng)站制作,網(wǎng)站改版等技術(shù)服務(wù)。擁有十多年豐富建站經(jīng)驗和眾多成功案例,為您定制適合企業(yè)的網(wǎng)站。十多年品質(zhì),值得信賴!

      jQuery緩存操作-cache數(shù)據(jù)




      不知注意到?jīng)]有,jQuery.data還有第四個參數(shù)pvt,這個參數(shù)只在jQuery._data中使用。
      // For internal use only.
      _data: function( elem, name, data ) {
          return jQuery.data( elem, name, data, true );
      },

      jQuery._data從命名上就指定它是私有的,使用jQuery的客戶端程序員不應(yīng)該去調(diào)用該方法。jQuery的API文檔上也不會公開它。


      jQuery的數(shù)據(jù)緩存模塊從1.2.3到1.6.1幾乎每個版本都在變。jQuery._data的提出就是為了避免客戶端程序員覆蓋/重寫了默寫模塊。如jQuery事件模塊中事件handler等就使用jQuery.data存儲,如果重寫了該模塊。那么事件模塊將癱瘓。因此特意添加了pvt參數(shù)及jQuery._data方法。


      但如果你刻意要破壞,那么還是可以做的。如下

      Test



      點擊div[id=xx]將不會觸發(fā)點擊事件。
      網(wǎng)站欄目:jQuery緩存操作-cache數(shù)據(jù)
      URL分享:http://www.ef60e0e.cn/article/gesodg.html
      99热在线精品一区二区三区_国产伦精品一区二区三区女破破_亚洲一区二区三区无码_精品国产欧美日韩另类一区
      1. <ul id="0c1fb"></ul>

        <noscript id="0c1fb"><video id="0c1fb"></video></noscript>
        <noscript id="0c1fb"><listing id="0c1fb"><thead id="0c1fb"></thead></listing></noscript>

        延安市| 顺昌县| 织金县| 双鸭山市| 南漳县| 当雄县| 洛宁县| 斗六市| 鲁山县| 仙桃市| 博罗县| 名山县| 商丘市| 宁城县| 葫芦岛市| 靖边县| 玉林市| 丘北县| 宜川县| 富蕴县| 横峰县| 句容市| 北海市| 孟州市| 房山区| 岳普湖县| 碌曲县| 宾阳县| 仪征市| 山丹县| 乌兰浩特市| 蓬溪县| 邢台市| 墨竹工卡县| 龙井市| 城步| 宁国市| 河南省| 新乡县| 威远县| 咸阳市|