元素选择器
程序员文章站
2022-04-06 09:32:47
...
寥寥几行代码,实现一个简单的元素选择器,兼容低版本 IE。
自 IE8 开始已经开始支持 querySelector 和 querySelectorAll 这两个十分有用的选择器函数,如果不考虑低版本浏览器,它们已经可以基本满足日常需求了。而在兼容低版本浏览器中,可以采用一些 hack 手段。
原理比较简单:通过 CSS Rule 给我们的目标元素添加特殊属性,然后遍历所有元素找到具备特殊属性的元素,当然,找到之后,移除这些特殊属性。
var firstStyleSheet = document.styleSheets[0] || document.createStyleSheet(); firstStyleSheet.addRule(query, 'Barret:Lee');for (var i = 0, len = document.all.length; i比如我们要获取 .box .item a.pink元素,上面的代码是这么做的,
- 给所有的 .box .item a.pink元素添加 { Barret: Lee; }这个 CSS 的样式
- 遍历所有元素找到包含 Barret 这个 CSS 属性的元素
- 移除属性
IE8 有些调皮,需要修复点小问题,源码地址:
- git clone https://github.com/barretlee/MiniQuery
- npm install mini-query
代码预览:
function $(query) { var res = []; if (document.querySelectorAll) { res = document.querySelectorAll(query); } else { var firstStyleSheet = document.styleSheets[0] || document.createStyleSheet(); firstStyleSheet.addRule(query, 'Barret:Lee'); for (var i = 0, len = document.all.length; i
推荐阅读
-
jquery通过id获取元素作为参数(jquery中ajax请求方式)
-
js删除对象中的某个元素(js删除对象属性的方法)
-
js从数组中删除指定元素(去掉数组中的某一项的代码)
-
java数组增加元素的方法(用java写数组并循环输入数据)
-
PHP删除数组中特定元素的两种方法
-
Python中遍历字典过程中更改元素导致异常的解决方法
-
AlternatingItemTemplate类似于 ItemTemplate 元素
-
简单理解vue中el、template、replace元素
-
HTML5中的Article和Section元素认识及使用
-
HTML5 的新的表单元素(datalist/keygen/output)使用介绍