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
元素中存在没有 <canvas>
元素的元素。请注意,这只是:not(:has())
的另一种处理方式,但这种方式应该可以在 IE 中使用。
【讨论】:
这也有效,但似乎我的问题超出了 jQuery/IE 版本。以上是关于IE中画布的jQuery选择器的主要内容,如果未能解决你的问题,请参考以下文章
CSS 选择器有效,jquery 选择器无效(仅 IE 问题)