使用 $.delegate() 选择命名空间中的元素

发布于 2024-11-04 09:10:42 字数 442 浏览 1 评论 0原文

我正在内联一个具有文本元素的外部 svg。我希望文本元素的内容镜像页面中的文本字段。如果用户编辑文本字段,则应更新 svg 中的文本元素,反之亦然。我已经使用 $.bind() 完成了这项工作。

用户可以选择不同的 svg。原始 svg 被删除并加载新的 svg。文本元素位于两个 svg 中,它只是一个不同的图形。

所以我真的需要 $.delegate() 而不是 $.bind()。我该如何编写该语法?这不起作用:

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

这也不起作用:

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

I am inlining an external svg that has a text element. I want the content of the text element to mirror a text field from the page. If the user edits the text field, it should update the text element in the svg, and vice versa. I've got this working using $.bind().

The user can select a different svg. The original svg gets removed and a new one loads in. The text element is in both svgs, it's just a different graphic.

So I really need $.delegate() not $.bind(). How do I write that syntax? This doesn't work:

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

Neither does this:

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

梦回旧景 2024-11-11 09:10:42

由于 jQuery 的选择器引擎 Sizzle 不支持 XML 命名空间,因此您可以通过转义简单地将冒号视为元素名称的一部分:

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

两个反斜杠,因为在 JavaScript 中第一个反斜杠转义了第二个反斜杠。然后转义的反斜杠转义了 jQuery 选择器的冒号。

As jQuery's selector engine Sizzle doesn't support XML namespaces, you can simply treat the colon as part of the element name by escaping it:

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

Two backslashes because the first escapes the second in JavaScript. Then the escaped backslash escapes the colon for the jQuery selector.

随风而去 2024-11-11 09:10:42

假设您出于解释目的编写了“svg”和“text”选择器,您的代码似乎是正确的。你确定你的选择器写对了吗?
难道不应该是:

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

或者text/svg是类名或id吗?
希望这有帮助

Your code seems to be right, assuming you wrote 'svg' and 'text' selectors for explaining purposes. Are you sure you wrote your selectors right?
Shouldn't it have been:

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

or maybe text/svg are class names or ids?
Hope this helps

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文