使用 $.delegate() 选择命名空间中的元素
我正在内联一个具有文本元素的外部 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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
由于 jQuery 的选择器引擎 Sizzle 不支持 XML 命名空间,因此您可以通过转义简单地将冒号视为元素名称的一部分:
两个反斜杠,因为在 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:
Two backslashes because the first escapes the second in JavaScript. Then the escaped backslash escapes the colon for the jQuery selector.
假设您出于解释目的编写了“svg”和“text”选择器,您的代码似乎是正确的。你确定你的选择器写对了吗?
难道不应该是:
或者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:
or maybe text/svg are class names or ids?
Hope this helps