2011-02-23 55 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

相关问题