2011-02-23 57 views
1

我正在使用Prototype.js,但這可能也適用於jQuery:我有一堆行的HTML列表,其中每行都與JavaScript中包含在數組中的對象相關。所以:javascript - 使用html標籤或添加屬性元素?

<ul> 
    <li id="0">blah</li> 
    <li id="1">blahblah></li> 
</ul> 

我目前使用id標籤來查找JavaScript對象引用。因此,當該行的用戶clickes,事件代碼看起來是這樣的:

var clickedItem = event.findElement('li'); 
if (clickedItem) { 
    var itemID = clickedItem.identify(); 
    var foundBlah = blahList[itemID]; 

以該ID標籤一個壞主意,我應該改爲將屬性添加到每一行創建時,如:

var blah = new Blah('blah'); 
    $(list).insert(<li>blah</li>).blah = blah; 

然後只是在事件處理程序中檢索該值?

回答

0

我不熟悉的原型,但在jQuery的,這聽起來像一個.data()工作,這可以讓你隨心所欲數據附加到一個元素:

$(list).insert($("<li>blah</li>").data("blah", blah)); 

// later... 
var blah = $(event.target).data("blah"); 

更新

原型方法Element#storeElement#retrieve,其類似地允許您附加元數據:

$(list).insert(new Element("li").insert("blah").store("blah", blah)); 

// later... 
var blah = event.findElement("li").retrieve("blah") 
+0

Th ere在原型中叫做store,如下所示:$(list).insert(...)。store('key','value');然後:.retrieve('key')元素。雖然我不知道爲什麼我會使用它,而不是僅僅爲元素添加屬性。 – BobTurbo 2011-02-23 02:18:40

+0

@BobTurbo - 是的,它看起來像Prototype的'.store()'/'.retrieve()'等價於'.data()'。我認爲這是實現你描述的理想方式,因爲它允許你將JS特定的數據附加到一個元素而不會混淆DOM。 – 2011-02-23 02:22:08

+0

啊,我明白了,謝謝:) – BobTurbo 2011-02-23 02:23:24

相關問題