在将SVG对象附加到DOM之前更改它们的属性

时间:2014-08-22 15:05:14

标签: javascript jquery css design-patterns svg

背景:

我正在开发一个应用程序,我通过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函数并为它创建一个事件处理程序的触发器,但这对于这种情况来说似乎过于复杂。

有什么想法吗?我也不依赖于这种模式/架构,这是一个非常简单的案例,我可以很容易地重新安排它。

0 个答案:

没有答案