嗨,这个问题更多地是关于最佳实践的咨询。有时,在构建完整的ajax应用程序时,我通常会动态添加元素。比如,当你添加一系列项目时,我会像这样做:
在这两个选项之后,通过“update”或“insert”添加列表。
-----
那么问题是是否存在更好的方法来做这件事情?
var template = new Template("<li id='list#{id}'>#{value}</li>");
var arrayTemplate = [];
arrayOfItem.each(function(item, index){
arrayTemplate.push(template.evaluate( id : index, value : item))
});
在这两个选项之后,通过“update”或“insert”添加列表。
-----
$("elementToUpdate").update("<ul>" + arrayTemplate.join("") + "</ul">);
问题是,如何在不重复读取数组的情况下添加事件处理程序。这是因为如果在更新或插入之前尝试添加事件,则会出现错误,因为该元素尚未出现在DOM中。因此,现在我所做的是在插入或更新后:arrayOfItem.each(function(item, index){
$("list" + index).observe("click", function(){
alert("I see the world");
})
});
那么问题是是否存在更好的方法来做这件事情?
Event#findElement
(http://api.prototypejs.org/dom/event/findelement/) - T.J. Crowder