首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >向浏览器添加HTML5查询选择器不支持

向浏览器添加HTML5查询选择器不支持
EN

Stack Overflow用户
提问于 2011-09-23 01:46:37
回答 2查看 4.4K关注 0票数 3

我一直在使用HTML5 selectors API,也就是querySelector。这些选择器真的很容易使用和处理。如果你不熟悉这个接口,它非常类似于jQuery选择器API,他们得到一个CSS选择器字符串并选择正确的元素。例如,这些选择器的工作方式相同:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
jQuery('#div') == document.querySelectorAll('#div')

jQuery('.myClass a') == document.querySelectorAll('.myClass a');

这个接口的Browser support相当不错。IE8支持它们。只有两个浏览器不支持这个接口: IE7和IE6。我正在寻找解决方案,以添加此功能到IE7和IE6。对我来说,querySelectorAllquerySelector就足够了,但如果有一种方法可以实现更多的功能,那就太好了!

我开始研究jQuery code,他们以前也这样做过,所以这是一个很好的地方来看看他们是如何创建选择器API的,但我不理解代码。有什么想法吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-09-23 01:49:13

您可以简单地使用jQuery使用的原始Sizzle引擎(由jQuery的作者John Resig编写)。

以下是Sizzle自己的描述:

是一个纯JavaScript的CSS选择器引擎,可以很容易地放入主机库中。

如果您想确保在本地支持querySelectorAll的情况下不使用Sizzle (即使Sizzle总是在可用时使用querySelectorAll ),请使用以下命令:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
if ( ! document.querySelectorAll ) document.querySelectorAll = Sizzle;
票数 9
EN

Stack Overflow用户

发布于 2011-09-23 02:03:57

使用复杂的选择器来查找元素通常不是一个好主意,因为它将脚本功能紧密地绑定到文档的布局和表示上。应该采用更简单的策略,例如在文档中使用in、类或分组元素。

如果你这样做,然后分析你的需求,你可能会发现你只需要几个简单的选择器。在这种情况下,访问元素的标准DOM方法可能会完成90%的工作,您只需要添加一些过滤。例如,'#id‘只是getElementById (这是jQuery/Sizzle实际使用的选择器),而'.myClass a’可以使用一个相当简单的getElementsByClassname函数(大多数浏览器都有一个内置的),并带有一个针对A元素的过滤器。

当然,这样的函数可以首先测试qSA支持,并在可用时使用它。

还要注意的是,已经有许多活动文档集合可以非常高效地使用,而且早期的DOM集合(如getElementsByTagName)也是活动的。我非常确定qSA会返回静态集合,因为这就是带有选择器的javascript库所做的事情。

无论如何,这都是值得深思的。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7523424

复制
相关文章

相似问题

添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文