在使用jquery中,我們經常會用到data方法,用于給元素附加一些自定義數據。但是有時候我們會發現在使用data方法給元素賦值的時候,賦值失敗了。接下來,我們來探討一下jquery data賦值失敗的原因及解決方法。
$(document).ready(function() { var $myDiv = $('div'); var data = {text: '這是一個數據'}; $myDiv.data('mydata', data); var myData = $myDiv.data('mydata'); console.log(myData.text); // 控制臺輸出:這是一個數據 });
在上面的代碼中,我們定義了一個變量$myDiv,用于選中一個div元素,在這個元素上使用data方法保存了一個自定義數據。然后我們再次使用data方法獲取這個數據,并控制臺輸出。如果這個代碼能夠正常運行的話,控制臺應該會輸出“這是一個數據”。
但是有時候我們會發現,定義的自定義數據并沒有保存成功,控制臺輸出undefined。那么這種情況的原因是什么呢?
一種情況是當我們在賦值之前已經使用了data方法獲取一個不存在的鍵名的值,此時jquery會為這個鍵名默認賦值null。然后我們再使用data方法賦值的話,是無法成功的。
$(document).ready(function() { var $myDiv = $('div'); var myData = $myDiv.data('mydata'); var data = {text: '這是一個數據'}; $myDiv.data('mydata', data); console.log(myData); // 控制臺輸出:null console.log(myData.text); // 控制臺輸出:Uncaught TypeError: Cannot read property 'text' of null });
把上面的代碼復制粘貼到瀏覽器中,控制臺會輸出“null”和Cannot read property 'text' of null。這種情況下,我們應該先判斷一下獲取到的值是否為null,如果是的話再進行我們的操作。
$(document).ready(function() { var $myDiv = $('div'); var data = {text: '這是一個數據'}; if ($myDiv.data('mydata') === null) { $myDiv.data('mydata', data); } var myData = $myDiv.data('mydata'); console.log(myData.text); // 控制臺輸出:這是一個數據 });
另一種情況是當我們使用data方法賦值的時候,鍵名中包含了大寫字母。這時,賦值會失敗,因為jquery會把鍵名中的大寫字母變成小寫字母,導致我們無法正確地獲取到我們定義的數據。
$(document).ready(function() { var $myDiv = $('div'); var data = {Text: '這是一個數據'}; $myDiv.data('myData', data); var myData = $myDiv.data('myData'); console.log(myData.Text); // 控制臺輸出:undefined });
為了避免這種情況的發生,我們在定義鍵名的時候,最好全部使用小寫字母來避免這種問題。
以上就是jquery data賦值失敗的原因及解決方法,希望對大家有所幫助。
上一篇內邊距css 怎么設置
下一篇內聯css背景圖片代碼