[問題] 請問引數為函式的$.data用法

看板Ajax作者 (嗡嗡)時間13年前 (2012/08/31 08:19), 編輯推噓1(105)
留言6則, 3人參與, 最新討論串1/3 (看更多)
最近在看jQuery的原始碼,$.data()函式看起來應該可以接受字串、物件及 函式三種引數才是。 引數為字串的用法很簡單,就單純儲存和讀取而已。 $("div").data("x",3)在所有的<div>元素上儲存x=3這個變數。 (其實是儲存在$.cache[id]上,id值才儲存在元素的$.expando屬性上) 引數為物件的用法也差不多: var a = {x:1, y:2, z:function(){}} $("div").data(a)在所有的<div>元素上儲存a內的所有元素。 效果和$("div").data("x",1).data("y",2).data("z",function(){})一樣。 最後,請問引數為函式的用法為何? 感謝。 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.44.169.165

08/31 08:41, , 1F
引數好像不能只有一個function
08/31 08:41, 1F

08/31 08:42, , 2F
08/31 08:42, 2F

08/31 08:43, , 3F
218行 key只有處理object和string的情況
08/31 08:43, 3F

08/31 08:55, , 4F
不能單傳f source裡面type obj全部當作物件處理
08/31 08:55, 4F

08/31 09:58, , 5F
呼叫之後的回傳值?
08/31 09:58, 5F
再試驗的結果,只有$.data()函式的引數可以用函式,$.fn.data()會出現錯 誤訊號。 而且用法似乎和物件差不多。 var a = function(){}; a.x = 3; a.y = 4; a.z = 5; $.data($("div")[0],a)會在第一個<div>元素上儲存a的靜態變數。 效果和$($("div")[0]).data("x",3).data("y",4).data("z",5)一樣。 另外,在ousapas提供的網址中的第249行中,將 「if ( typeof key === "object" ) {」改成 「if ( typeof key === "object" || typeof key === "function" ) {」 $("div").data(a)就可以使用了。 效果和$("div").data("x",3).data("y",4).data("z",5)一樣。 不知道為什麼原始碼中沒有這樣寫? ※ 編輯: kilva 來自: 114.44.169.165 (08/31 10:22)

08/31 10:41, , 6F
很少人這樣用吧 大都是key,value的形式
08/31 10:41, 6F
※ 編輯: kilva 來自: 114.44.169.165 (08/31 12:03)
文章代碼(AID): #1GG0C58W (Ajax)
文章代碼(AID): #1GG0C58W (Ajax)