如何将 jQuery 选择器与 SVGweb 结合使用

发布于 2024-12-14 21:54:11 字数 524 浏览 0 评论 0原文

我想在 SVG 上使用 jQuery 选择器。在支持本机 SVG 的浏览器上,所有选择器都可以正常工作。 但在浏览器上(实际上,我只测试了 ie8),其中 SVGweb 使用 Flash 渲染器,只有某些选择器可以工作,例如:

$('#id')             /* id selectors works*/
$('#id #another-id') 
$('*')                /* universal selector works */  

有些选择器不起作用:

$('path')            /* type selectors don't work */
$('.region')         /* class selectors don't work */

注意:我还没有测试其他选择器。

我的问题:我如何让他们工作?

注意:如果这是不可能的,一个简短的解释(也许还有针对此限制的某种解决方法)可能会赢得复选标记。

I want to use jQuery selectors on a SVG. On browsers with native SVG support all selectors work fine.
But on browsers (actually, I only tested ie8), where SVGweb is using the Flash renderer, only some selectors work, eg:

$('#id')             /* id selectors works*/
$('#id #another-id') 
$('*')                /* universal selector works */  

Some selectors won't work:

$('path')            /* type selectors don't work */
$('.region')         /* class selectors don't work */

Note: I didn't yet test other selectors.

My Question: How do I get them working?

NB: If this is not possible, a short explanation (and maybe some sort of work-around for this limitation) could earn the check mark.

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

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

发布评论

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

评论(1

眼藏柔 2024-12-21 21:54:11

(使用 Firefox)

我使用 embed-in-an-方法来实现跨浏览器兼容性:

<!--[if !IE]>-->
  <object data="path-to.svg" type="image/svg+xml" id="object-id">
  </object>
<!--<![endif]-->
<!--[if lt IE 9]>
  <object src="path-to.svg" classid="image/svg+xml" id="object-id">
  </object>
<![endif]-->
<!--[if gte IE 9]>
  <object data="path-to.svg" type="image/svg+xml" id="object-id">
  </object>
<![endif]-->

...然后使用 节点的 contentDocument 告诉 jQuery() 有关这个新 DOM 的信息...

var svgdoc = $('object-id').get(0).contentDocument;
var $svg = $(svgdoc).children();

...您应该能够以 $svg 为基础:

var $paths = $('path',$svg);
$svg.find('rect').attr('fill','blue');

(using Firefox)

I'm using the embed-in-an-<object> approach for cross-browser compatibility:

<!--[if !IE]>-->
  <object data="path-to.svg" type="image/svg+xml" id="object-id">
  </object>
<!--<![endif]-->
<!--[if lt IE 9]>
  <object src="path-to.svg" classid="image/svg+xml" id="object-id">
  </object>
<![endif]-->
<!--[if gte IE 9]>
  <object data="path-to.svg" type="image/svg+xml" id="object-id">
  </object>
<![endif]-->

...then use the <object> node's contentDocument to tell jQuery() about this new DOM...

var svgdoc = $('object-id').get(0).contentDocument;
var $svg = $(svgdoc).children();

...and you should be able to base things off of $svg:

var $paths = $('path',$svg);
$svg.find('rect').attr('fill','blue');
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文