日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【转】data和attr的用法与区别

發布時間:2025/3/20 编程问答 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【转】data和attr的用法与区别 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

attr()的用法

attr()獲得屬性值

通過attr()獲得屬性時,可以這樣$(selector).attr(attrName)。注意,其返回值始終是string型!?
eg : 通過attr()得到的屬性age的值是”23”,屬性iswork的值是”true”。?
另外需要注意的是,attr()對傳入的attrName大小寫不敏感,就是說attr(‘name’)和attr(‘NAME’)都能得到期望的返回值。

<div class="card" id="jq-attr" name="zx" AGE="23" isWork="true"></div> $('#jq-attr').attr('age'); // "23" $('#jq-attr').attr('iswork'); // "true"

attr()添加和修改屬性

attr修改屬性支持三種方式,即可以向API傳遞三種形參:attr(attrName, value),attr(attrName, function),attr(obj)。?
如果第二個參數是function,那么該function會被執行,并將執行結果作為attr()的返回值。?
attr(obj)等同于多次調用attr(attrName, value),比如attr({attr1: value1, attr2: value2}),等同于attr(attr1, value1).attr(attr1, value2);?
在JavaScript代碼,可以通過attr()動態修改屬性值和添加新屬性,如果傳入value是對象,最終會獲得↓↓↓

var $el = $('#jq-attr'); $el.attr('attr1', {name: 'chen'}); $el.attr('attr1'); // "[object Object]"$el.attr('attr2', [1, 2, 3]); $el.attr('attr2'); // "1, 2, 3"$el.attr('attr3', null); $el.attr('attr3'); // "undefined"$el.attr('attr4', undefined); $el.attr('attr4'); // "undefined"

可以看出,如果value是基本數據類型的一種,那么直接返回相應的字符串,但是null value返回的是“undefined”并非”null”。如果value是一個對象,那么對象的toString()會被調用,執行結果即attr()的返回值。

data()的用法

data()修改數據和綁定新數據

和attr()類似,可在頁面生成時綁定數據,實際是給元素添加名稱為data-*的屬性。

<div class="card" id="jq-attr" data-name="chen" data-AGE="23" isWork="true"></div>

在JavaScript里,data()修改數據可以這樣:data(key, value)和data(obj)。后者等同于data(key1, value1).data(key2, value2)。還有一種方式,如下

var data = $el.data(); data.attr = 10; 在使用data()修改數據時,如果value是undefined類型,那么數據不會保存或更新。 $el.data('school', undefined); $el.data().hasOwnProperty('school'); // true $el.data('attr ', undefined); $el.data('attr '); // 10

data()獲取數據

往data()傳入一個string稱之為key的參數即data(key),或者data()[key]來獲得與key對應的value。但是注意一點,data()可能會返回undefined如果沒有任何數據綁定,所以data(key)的方式更為安全。和attr()值返回string類型的值不一樣,data()會對靜態綁定的數字、布爾、對象、數組和null進行轉換。看下面幾個例子。

<div class="box" id="jq-data" data-name="zx" data-AGE="23" data-isWork="true" data-func="function(){}" data-list='{"listname":"eric chen"}' data-undefinedkey="undefined" data-nullkey="null" data-last-value="100"></div> var $el = $('#jq-data'); $el.data('age'); // 23 $el.data('AGE'); // undefined $el.data('isWork'); // true $el.data('func'); // "function() {}" $el.data('list'); // obj {"listname": "eric chen"} $el.data('undefinedkey'); // "undefined" $el.data('nullkey'); // null $el.data('lastValue'); // 100 $el.data('lastvalue'); // undefined

如果在HTML里靜態綁定了數據,通過data()來獲取數據時,key必須全小寫,比如綁定data-AGE=”23”,只能通過data(‘age’)而不是data(‘AGE’)。另外注意data-last-value=”100”,只能通過data(‘lastValue’)或者data(‘last-value’)。?
在JavaScript里通過data()修改數據,再獲取值時,須嚴格按照指定的key。比如data(‘AGE’, 22),這時data(‘age’)是23,data(‘AGE’)返回22。這時因為,在JS里第一調用data()時,會將HTML里靜態綁定的數據,復制到jQuery.cache變量里,復制時key中的字符都轉換為對應的小寫字母。再次使用data()修改數據或添加新數據時,對key不會轉換為小寫字母,也不會對存入的數據做類型轉換!?
通常,data(‘lastValue’, value)和data(‘last-value’, value)修改的是同一數據。?
但是如果不給data()傳入任何參數來獲得綁定在$el上的所有數據即一個JSON對象,然后修改這個對象的屬性值。

var dt= $el.data(); dt['last-value'] = 99; dt.lastValue = 100;$el.data('last-value'); // ? $el.data('lastValue'); // ?

你會發現el.data(last?value)99el.data(′last?value′)返回99,而el.data(‘lastValue’)返回100。另外一種方式與此等價:?
$el.data({‘last-value’: 99, ‘lastValue’: 100});

小結?
如果是為了存儲和傳遞頁面元素相關的數據,data()比attr()是更好的選擇。了解data()的工作方式,才能正確使用這個API。

轉載于:https://www.cnblogs.com/yuan9580/p/11343938.html

總結

以上是生活随笔為你收集整理的【转】data和attr的用法与区别的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 欧美日本一道本 | 熟妇一区二区三区 | 国产一级片久久 | 亚洲精品字幕在线观看 | 美女视频污 | 伊人久在线 | 日本黄色xxxxx | 91精品视频一区二区三区 | www.色在线观看 | 色爱综合区 | 久久久人 | 国产视频手机在线 | 在线国产中文字幕 | 亚洲精品成人无码熟妇在线 | 黄色小视频在线观看 | 日韩三级中文 | 日本不卡久久 | 日日草夜夜草 | 天堂av中文在线观看 | 国产精品一区二区三区高潮 | 四川操bbb| 影音资源av| 日韩欧美在线一区二区三区 | 欧洲女性下面有没有毛发 | 蘑菇福利视频一区播放 | 黄色a网站| 能在线观看的av网站 | 国产一区二区波多野结衣 | 国产一区二区av在线 | 久久97人妻无码一区二区三区 | 国产性猛交xxxⅹ交酡全过程 | 快播日韩 | 热久久久久久 | 不卡视频在线 | 香蕉午夜视频 | 一级免费观看 | 欧美高清精品 | 国产小视频在线播放 | 粗大的内捧猛烈进出 | 国产视频在线观看一区二区 | 国产经典久久 | 亚洲欧美日韩精品久久 | 色射视频 | 久久久激情网 | 欧美日韩一区免费 | 亚洲综合色网 | 在线三级av | 潘金莲黄色一级片 | 一级特黄欧美 | 欧美性教育视频 | 日本高清不卡二区 | 午夜男人天堂 | 国产xxx在线| 精品一区二区三区久久久 | 欧美日韩精品三区 | 精品久久久无码中文字幕边打电话 | 欧美日韩国产在线观看 | 精品一区二区视频 | 国产无遮挡一区二区三区毛片日本 | 亚洲开心网 | 国内精品视频一区二区三区 | 日韩精品免费一区二区三区竹菊 | 亚洲欧美一区二区激情 | 永久免费在线看片 | 欧美成人不卡视频 | 福利视频免费 | 精品成人一区二区 | 日韩人妻无码一区二区三区 | 色哟哟欧美精品 | 国产毛片久久久久久久 | 亚洲成人午夜影院 | 成人免费高清在线播放 | 青青伊人av| 色偷偷888欧美精品久久久 | 欧美顶级metart裸体全部自慰 | 91在线超碰| 男人av影院 | 人妻换人妻仑乱 | 午夜视频在线观看视频 | 久久蜜臀精品av | 91丨九色丨蝌蚪丨对白 | 国模大胆一区二区三区 | 一级做a爱片性色毛片 | 极品在线观看 | 国产成人无码精品亚洲 | 亚洲中文一区二区三区 | 51人人看 | 天堂网成人 | 日韩手机在线视频 | 少妇在线| 91av在线免费视频 | 永久在线视频 | 韩日毛片 | 国产性生活毛片 | 成人午夜激情网 | 黄色av免费在线看 | 国产欧美精品国产国产专区 | 日韩在线一二 | 乳色吐息在线看 |