2013-12-08 36 views
0

我不知道這是可能的,但是......如何使用jQuery的.data()方法發送對象?

比方說,我有以下對象:

var myData = { 1 : 1. 2 : 2 } 

我怎樣才能將對象附加到以下網址,使用jQuery的方法。數據。

$('.link').html('<a href="#" data-test="' + myData + '">test</a>'); 

如果我綁定一個點擊功能到以下網址,我應該能夠以檢索myData的

$('.link a').on('click', function(e) { 
    $(e.currentTarget).data('test'); 
}) 

但它不工作...我會得到一個名爲字符串值:[」對象對象「]

所以我想,我需要在使用jQuery的.data方法發送之前準備-myData-對象。

有什麼建議嗎?

回答

1

由於你有一個數據對象,不設置它作爲一個屬性,則使用。數據()設定器設定的test

$('<a href="#">test</a>').appendTo($('.link').empty()).data('test', myData); 

然後

$('.link a').on('click', function(e) { 
    var myData = $(this).data('test'); 
}) 
+0

值Ty幫助...我會嘗試一下,但你能解釋我最初嘗試做什麼的區別? – webmasters

+1

@webmasters'myData'是一個對象,當你將它轉換爲一個字符串時,它變成'[object Object]',否則你需要使用像[JSON.stringify()](https://developer.mozilla.org/ en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify)將數據對象轉換爲適當的字符串格式。 –

2
var myData = { '1' : 1, '2' : 2 }; 
var $anchor = $('<a />', {href:'#', text : 'test'}).data('test', myData); 

$('.link').empty().append($anchor); 


$('.link a').on('click', function(e) { 
    e.preventDefault(); 

    console.log($(this).data('test')); 
});