Выберите элемент в пространстве имен, используя $ .delegate () - PullRequest
1 голос
/ 01 мая 2011

Я вставляю внешний svg с текстовым элементом.Я хочу, чтобы содержимое текстового элемента зеркально отображало текстовое поле со страницы.Если пользователь редактирует текстовое поле, он должен обновить текстовый элемент в svg, и наоборот.У меня это работает, используя $ .bind ().

Пользователь может выбрать другой svg.Исходный svg удаляется, а новый загружается. Текстовый элемент находится в обоих svgs, это просто другой рисунок.

Так что мне действительно нужно $ .delegate (), а не $ .bind ().Как мне написать этот синтаксис?Это не работает:

$('#svg_container').delegate('svg text', 'keyup click', function() {
});

Также не работает:

$('#svg_container').delegate('text', 'keyup click', function() {
});

Ответы [ 2 ]

1 голос
/ 01 мая 2011

Ваш код кажется правильным, если вы написали селекторы 'svg' и 'text' для объяснения целей. Вы уверены, что написали свои селекторы правильно? Не должно было быть:

$('#svg_container').delegate('svg :text', 'keyup click', function() {
});

или, может быть, text / svg - это имена классов или идентификаторы? Надеюсь, это поможет

1 голос
/ 01 мая 2011

Поскольку механизм выбора jQuery Sizzle не поддерживает пространства имен XML, вы можете просто рассматривать двоеточие как часть имени элемента, экранируя его:

$('#svg_container').delegate('svg\\:text', 'keyup click', function() {
});

Два обратных слеша, потому чтопервый избегает второго в JavaScript.Затем экранированный обратный слеш экранирует двоеточие для селектора jQuery.

...