2012-09-24 85 views
1

如果試圖用data()方法更改數據屬性值,則得不到與attr(data-key, data-value)方法相同的結果。jquery的數據(key,val)和attr(data-key,data-val)的區別

例如,我使用data-hovered=true來存儲元素的某些狀態。如果您對element[data-hovered=true]選擇器有一些css樣式,則使用data()方法將值true設置爲data-hovered將不起作用。只有使用attr()纔會有效果。

那麼這兩種方法有什麼區別?

回答

6

.data()用於將數據存儲在對象中,但是從HTML5的「發佈」開始,它也可以訪問元素上的data- *屬性。

但是,它不能改變這些,因爲它主要用於在對象等中存儲數據,而不是物理上在元素上。

因此,attr()是更改元素上屬性值的唯一方法,如data- *屬性。

參見:

+0

所以基本上你是說,雖然數據屬性是HTML5標準,jQuery的只有數據使用()方法是讀取具有json字符串分配給它們的數據屬性?嗯好吧知道我認爲這是一個很好的答案有這麼多的投票 – Tudor

+0

P.S.通過良好的使用我的意思是合乎邏輯的,高效的,其餘的無用的。 – Tudor

+0

井數據也可以存儲值,但它將其存儲在*節點對象*中,如第一個鏈接中的答案中所述。數據()是在我意識到的HTML5之前,所以它在它出現之前就已經使用了,我仍然確信。 – David

相關問題