今天在做一個功能時,用到了利用attr記錄暫時的值,還是按照之前的一慣做法,attr賦值,data取值,但是!失靈了!
然后,調試發現,之前都是在頁面初始化時,標簽已有attr屬性,此時用$.data()是可以獲取到,但是,當再次$.attr()賦值后,就不可以了。
經搜索及調試及驗證后,發現,原因如下:
1.attr屬性是必須寫在html標簽上,它屬於dom屬性,而data是儲存於jquery對象模型上,它屬於jquery對象屬性,因此,它倆本質不一樣;
2.attr的運行機制是:$.attr()取值和賦值都是找到html標簽,直接操作該標簽的屬性;
3.data的運行機制是:頁面第一次解析時,會將dom節點的attribute值存放到內存中, $.data()取值和賦值都是直接操作這個內存值,而不是dom元素;
綜上所述:
1.避免attr和data的混合使用,以免因為數據不一樣,產生bug;
2.attr賦值就用attr取值;
3.data賦值就用data取值。
