背景:
我正在开发一个应用程序,我通过myModule.getElement()
动态地将元素添加到容器中。那会给我一个模板:
function getElement(){
var source = $("#entry-template").html();
var template = Handlebars.compile(source);
return template;
}
然后我会将它附加到容器中。 该模板包含一个SVG对象。
我想在将元素附加到DOM之前(或者在执行此操作之后立即'初始化'元素,例如:
$(template).find("path, polygon, circle").attr("fill", "#ddd");
但这不起作用,我的猜测是因为此时该元素尚未添加到DOM中(如果我错了,请纠正我。)
我可以这样做:
for (var i = numElements; i > 0; i--) {
elArray.push(myModule.getElement());
container.append(elArray[i]);
};
myModule.initializeElements();
然后在MyModule ::
中function initElements(){
$('.elClass').find("path, polygon, circle").attr("fill", "#ddd");
}
但感觉并不好。我想知道在将SVG对象附加到DOM之前是否可以更改SVG对象的属性,这可能吗?
我读到我可以扩展append函数并为它创建一个事件处理程序的触发器,但这对于这种情况来说似乎过于复杂。
有什么想法吗?我也不依赖于这种模式/架构,这是一个非常简单的案例,我可以很容易地重新安排它。