IE中画布的jQuery选择器

Posted

技术标签:

【中文标题】IE中画布的jQuery选择器【英文标题】:jQuery selector for canvas in IE 【发布时间】:2012-02-02 18:06:17 【问题描述】:

我正在使用 jQuery 迷你图插件开发一个页面。这个插件用画布标签替换了一些 CSV 文本。我有一系列包含 CSV 文本的跨度标签。我正在尝试编写一个 jQuery 选择器来选择尚未使用画布标签填充的跨度标签:

<td>
    <span class="inlinesparkline">
        <canvas style=" ... "  ></canvas>
    </span>
<td>
<td>
    <span class="inlinesparkline">0,2,0,0,0,0,0,0,0,0,0,0,0</span>
<td>

我写过:

$('.inlinesparkline:not(:has(canvas))')

但是,这在 IE 中不起作用。由于画布标签是由插件生成的,我不能(轻松地)向它们添加一个类以在选择器中使用。是否有另一种方法可以选择这些在 IE 中可以使用的“没有画布的跨度”标签?

谢谢!

【问题讨论】:

IE8,但现在我认为我的问题比 IE 问题的根源更深。我使用的是 jQuery 1.5.1(感谢 VS2010!),当我将它提升到 1.7 时,它做得更好。尝试在这个小提琴上更改 jQuery 版本:link IE8 不支持 canvas 标签。直到 IE9。 【参考方案1】:

使用$.filter,这应该可以工作:

var elements = $('.inlinesparkline').filter(function(index) 
    return !$(this).find('canvas').length;
);

它将过滤掉每个.inliensparkline 元素中存在没有 &lt;canvas&gt; 元素的元素。请注意,这只是:not(:has()) 的另一种处理方式,但这种方式应该可以在 IE 中使用。

【讨论】:

这也有效,但似乎我的问题超出了 jQuery/IE 版本。

以上是关于IE中画布的jQuery选择器的主要内容,如果未能解决你的问题,请参考以下文章

CSS 选择器有效,jquery 选择器无效(仅 IE 问题)

IE 无法识别 jQuery 选择器

在 IE 8 中加速 ":not" jQuery CSS 选择器?

为啥 IE8 中不显示 Jquery 日期选择器图标?

jQuery *= 选择器在 IE8 中不起作用

IE 中的 jQuery CSS 选择器