Как обновить текстовый элемент SVG с помощью Snap.svg?

Я использую Snap.svg для загрузки изображения SVG и добавления в него текстовых элементов. Тем не менее, мне нужно иметь возможность обновлять текстовые элементы при загрузке страницы.

Сейчас я делаю что-то вроде этого:

var svg = Snap("#selector");
var text;
Snap.load(path_to_file, function(f) {
    svg.append(f);
    var g = svg.select("g");
    text = g.text(x_pos, y_pos, label);
}

Скажем, я хочу обновить текст позже, как мне это сделать? Я гарантированно обновляю объект text после его создания после вызова load.

Единственный способ, которым мне удалось изменить текст, - это установить элемент id для элемента, а затем выполнить его с помощью jQuery следующим образом:

self.selector.find("#my_id")[0].textContent = "New text";

Однако это кажется действительно неправильным, и я думаю, что я мог бы просто что-то упустить с помощью API Snap.

Ответ 1

Я думаю, это должно быть так просто, как

text.attr({ text: 'my new text'});

так

setTimeout( function() { text.attr({ text: 'my new text'}) }, 2000 );

проверит его

Ответ 2

Другим способом, вы можете напрямую получить ссылку DOM node с помощью Element.node, чтобы вы могли беспорядок

text.node.textContent = "New text";
text.node.innerHTML = "New text";
text.node.innerHTML = 'a<tspan dy="5">2</tspan>'

Ответ 3

С jquery

$(s.select('#id').node).text('new text');