3 回答

TA貢獻1789條經(jīng)驗 獲得超8個贊
幾天前,當我使用.data()
和.attr('data-name')
處理HTML5數(shù)據(jù)屬性時,我遇到了類似的“bug” 。
您描述的行為不是錯誤,而是設計。
該.data()
調(diào)用是特殊的 - 它不僅檢索HTML5數(shù)據(jù)屬性,還嘗試評估/解析屬性。因此,使用像data-myjson='{"hello":"world"}'
檢索到的屬性.data()
將返回一段Object
時間檢索通過.attr()
將返回一個字符串。參見jsfiddle示例。
因為.data()
額外的處理jQuery存儲了屬性評估的結果$.cache
- 畢竟,一旦評估了數(shù)據(jù)屬性,在每次.data()
調(diào)用時重新評估將是浪費- 特別是因為數(shù)據(jù)變量可以包含復雜的JSON字符串。
我說了以下所有內(nèi)容:通過后續(xù)調(diào)用后不會看到的任何更改檢索屬性后。.data()
.attr('data-myvar', '')
.data()
在jsfiddle上測試一下。
為了避免這個問題,請不要混合.data
和.attr()
調(diào)用。使用其中一個。

TA貢獻2012條經(jīng)驗 獲得超12個贊
那是因為屬性的名字是data-itemname
。您不能使用-
簡寫obj.attribute
表示法(obj.data-itemname將被解釋為“obj.data minus itemname”)。
- 3 回答
- 0 關注
- 1415 瀏覽
添加回答
舉報