Raphael JS: Как изменить текстовый элемент Raphael с помощью jQuery? - PullRequest
0 голосов
/ 24 октября 2011

Я создал текстовый элемент:

var gcText = paper.text(textPosX, textPosY, "myText");
gcText.attr({"text-anchor":end});
gcText.node.id = "myObject";

После загрузки страницы я использую некоторые команды JS jQuery для изменения некоторых элементов, а также хочу обновить текст. Я уже нашел эти сообщения: Как изменить текст Рафаэля? и Изменение текста в RaphaelJS ... и попробовал это:

$('#myObject').attr("text","new text");

Но не повезло с этим! Эти команды изменяют атрибут text внутри элемента svg-text, но не текст, который я вижу на странице. Теперь я обнаружил, что внутри сгенерированного SVG есть tspan-элемент:

<text id="myObject" [...] text="new text"><tspan dy="3.5">myText</tspan></text>

Я вижу только «myText», а не текст из атрибута text («новый текст»). Как изменить этот текст с помощью команд jQuery ??

BR и спасибо заранее, Chris

1 Ответ

1 голос
/ 24 октября 2011

Вероятно, вам следует попытаться ссылаться на сам объект Raphael, не используя jQuery.jQuery отлично подходит для манипулирования DOM, с такими элементами, как DIV, A, P и т. д.

API Рафаэля гораздо лучше подходит для манипулирования SVG.

Вот аналогичный вопрос с соответствующим ответом на ваш вопрос:

Как изменить текст Raphael?

Редактировать: Пример переписать код:

function renderText(myText) {
    var gcText = paper.text(textPosX, textPosY, myText).attr({"text-anchor":end});
    gcText.node.id = "myObject";
}
//onload
renderText("First text to appear");

// call it second time
renderText("Second text to appear");

Это не ТОЧНО меняет текст внутри SVG, а переписывает его.Но вы получаете тот же эффект.

...