簡體   English   中英

如何使用對象設置jQuery.data()

[英]How to set jQuery.data() using object

我目前正在嘗試使用.data()方法來使用變量存儲數據。 但是,由於某種原因,它無法正常工作。 這是我的概念證明代碼:

var option = 'x';
$(this).data({ 'x' : 0 });
alert($(this).data(option));
$(this).data({ option : 20 });
alert($(this).data(option));

令人驚訝的是,這兩個警報都返回0,而不是0,然后返回20。我們非常感謝您的幫助! 謝謝!

這是因為在第二個版本中,您引用的是鍵“選項”,而不是變量選項(鍵“ x”)。

var option = 'x';
$(this).data({ 'x' : 7 });
console.log($(this).data(option));
$(this).data({ option : 20 });
console.log($(this).data('option'));

一個更簡單的版本:

option = 'x';
console.log({option: 20});

輸出:

Object { option=20 }

但是,您可以將鍵值語法與變量一起使用。

$(this).data(option, 20 );

您想訪問該屬性。

$(this).data({ option : 20 });
alert($(this).data('option'));

問題在於,對象文字中的option關鍵字被解釋為鍵的文字字符串,而不是x (這就是對象文字的工作方式)。 如果要使用可變鍵,則需要使用一個臨時對象。 例如,

var option = 'x';
$(this).data({ 'x' : 0 });
alert($(this).data(option));
// create a data object so you can use a variable for the key
var obj = {};
obj[option] = 20;
$(this).data(obj);
alert($(this).data(option));

原因是你的第二個

$(this).data({ option : 20 }); 

實際將其設置為x屬性時,將20設置為option屬性。

我認為這是您要執行的操作:

var option = 'x'; 
$(this).data({ x : 0 }); 
alert($(this).data(option)); 
$(this).data({ x : 20 }); 
alert($(this).data(option)); 

或者,您可以改為使用鍵值語法,如下所示:

var option = 'x'; 
$(this).data(option, 0); 
alert($(this).data(option)); 
$(this).data(option, 20); 
alert($(this).data(option)); 

數據對象的鍵不能是變量。

您可以做的是:

var option = 'x';
var data = {};
data['x'] = '0';
$(this).data(data);
alert($(this).data(option));

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM