2012-10-31 63 views
2

我在創建一個錨,存儲數據並追加到div元素現在JQuery的 - 從數據。數據()丟失

var x = $("<a class='randomclass'></a>"); 
x.data('foo', 'bar'); 
console.log(x.data()); 
... 
$("<div></div>").append(
    x 
); 
... 

當我嘗試有一個事件處理函數的代碼那個數據回來了,它表明它的未定義。我嘗試了不同的方式訪問元素,但他們都沒有返回任何數據

$("body").on("click", "a.randomclass", function (event) { 
    event.preventDefault(); 
    console.log($(event.target).data('foo')); 
    console.log($(event.currentTarget).data('foo')); 
    console.log($(this).data('foo')); 
}); 

任何理由爲什麼這樣?

編輯:修正了錯字。

+0

難道你不能只是'$(this).data(「foo」)'? –

+0

@jSang他在最後一行。 – VisioN

+0

抱歉,錯過了那一個。 –

回答

3

好吧,我想我找到了答案的傢伙。

問題是我使用.html()獲得元素的標記並將它傳遞給一個函數。

我想這意味着該元素的任何數據都會丟失,因爲.html()只是獲取該元素的字符串表示形式。

+1

請問您的下列問題時,請更簡潔並粘貼真實的代碼,試圖幫助您的人不會浪費時間。 – Nelson

+0

在這一個保存我的後方。 –

2

似乎爲我工作。 jsFiddle

var x = $("<a class='randomclass'>test link</a>"); 
x.data('foo', 'bar'); 
console.log(x.data()); 

$("body").append(x); 

$("body").on("click", "a.randomclass", function(event) { 
    event.preventDefault(); 
    console.log($(this).data()); 
});​ 
+2

+1,看起來他沒有將div附加到文檔 – Vithozor

+0

的問題嗯,不知道這些信息是否有幫助,但錨點是通過infoWindowContent屬性https://開發人員插入到Google地圖v3標記對話框中的。 google.com/maps/documentation/javascript/overlays?hl=zh-CN#Markers – arvinsim