qq_遁去的一_1
2018-12-07 04:07:31
今天在使用 attr 為一個對象設(shè)置一個屬性時出現(xiàn)這樣一個問題:
?
var obj = {name:'', sex:''};
var $newNode = $('<span>contents....</span').attr('_udata', obj);
$(document.body).append($newNode);
?
上面的代碼使用了 attr 方法為對象設(shè)置了一個屬性,這個屬性的值是一個 Object,但是在使用 attr 方法來獲取這個屬性值的時候,獲取的值卻變成了字符串:
?
var obj = $newNode.attr('_udata');
alert(typeof obj); // alert string.
?
真是很奇怪了,我使用是的 v1.3.2 版本的。
?
不知道大家有沒有遇到這樣的問題
7 回答

MYYA
TA貢獻(xiàn)1868條經(jīng)驗 獲得超4個贊
這個應(yīng)該不奇怪吧!這里你使用attr進(jìn)行屬性添加的時候她是作為字符串的形式添加到該屬性上的,取出來也一樣。想要轉(zhuǎn)換回原來的object對象你可以使用eval來處理。比如 var obj=eval($newNode.attr('_udata'));

手掌心
TA貢獻(xiàn)1942條經(jīng)驗 獲得超3個贊
$newNode.attr('_udata') 方法取出來的數(shù)據(jù)是個 '[object Object]' 的字符串。
按 jQuery 的 API 參考, attr 設(shè)置屬性的時候,值是一個 Object, 而取值的時候,返回的也是一個 Object

PIPIONE
TA貢獻(xiàn)1829條經(jīng)驗 獲得超9個贊
你用錯方法了,應(yīng)該用數(shù)據(jù)緩存那里的data方法;attr是給html元素設(shè)置屬性的,不是在jquery對象上緩存數(shù)據(jù)。
添加回答
舉報
0/150
提交
取消