自 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
声明:本文来自网络,不代表【好得很程序员自学网】立场,转载请注明出处:http://haodehen.cn/did114801