2012-02-23 71 views
0

我需要做一個ajax調用來檢索項目列表,每個項目將通過使用jQuery的.html();成爲一個HTML元素,例如<li/>然後點擊<li/>將觸發一個函數有關該項目的數據。使用HTML標籤來攜帶自定義屬性

問題是將項目數據與<li/>關聯的更好策略是什麼。

當前我正在嘗試將項目數據定製爲屬性<li/>

例如我將它創建爲<li myattr='itemData'>itemDisplayStr </li>。但是我無法在點擊事件中找回數據,如下所示:

$('li').click(function() { 
    alert(this.myattr); 
    alert(this.attr('myattr')); 
    alert(this.attributes['myattr']); 
}); 

以上都不是。

任何人都可以給我一些線索嗎? 謝謝

+0

您正在調用'this.attr('myattr')',但表示您將其設置爲'itemDisplayStr'。我假設這只是很快寫入示例代碼?嘗試'$(this).attr('itemDisplayStr);' – MetalFrog 2012-02-23 16:01:20

+1

@MetalFrog。是的,他需要'$(this)'查看我添加到我的答案中的文檔。 – gdoron 2012-02-23 16:07:03

回答

0

this不是jQuery object。與$() =>$(this)包圍它創建jQuery對象:

$('li').click(function() { 
    alert($(this).attr('myattr')); 
}); 

文檔

在處理程序中,這指的是DOM元素的關鍵字,其處理程序的約束。要使用jQuery中的元素,它可以傳遞到正常$()

0

你試過:

alert($(this).attr('myattr'))

+0

感謝您的快速解答。解決方案就這麼簡單。 – 2012-02-23 16:21:12

0

你探索了jquery data

$('li').data('foo', 52); 
$('li').data('bar', { myType: 'test', count: 40 }); 

$('li').data('foo'); // 52 
$('li').data(); // {foo: 52, bar: { myType: 'test', count: 40 }} 

有樂趣JSON

編輯 什麼,如果你不喜歡的東西

ul.append($("<li>" + label + "</li>").data("foo", "bar")); 
+0

不知道.data()。我會記住將來使用它。但是對於這個我需要單獨使用每個lt />,如果使用.data(),我可能需要爲每個項目動態創建一個id。 – 2012-02-23 16:28:18

+0

看到我的編輯... – 2012-02-23 17:02:46

0

你忘了使用jQuery使用它的價值每李難道不需要自己的ID attr()功能:$()

$(this).attr('myattr'); 
+0

感謝您的快速解答。解決方案就這麼簡單。 – 2012-02-23 16:21:01

相關問題