首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > Web前端 >

部分浏览器中querySelector和querySelectorAll的异常实现

2012-10-16 
部分浏览器中querySelector和querySelectorAll的错误实现querySelector和querySelectorAll是W3C提供的新的

部分浏览器中querySelector和querySelectorAll的错误实现

querySelector和querySelectorAll是W3C提供的新的查询接口

function $(id) {    return document.getElementById(id);}var d1 = $('d1');var obj1 = d1.querySelector('div a');var obj2 = d1.querySelectorAll('div a');var old = d1.id,id = d1.id = "__sizzle__";try {    var query = '#' + id + ' div a';    alert(d1.querySelector(query));    alert(d1.querySelectorAll(query).length);} catch(e) {} finally {    old ? d1.id = old: d1.removeAttribute("id");}

实现很巧妙,指定范围的元素如果有id,将其保留在old,"__sizzle__"赋值其作为临时id,在选择器"div a"前指定查找范围为"#__sizzle__",即d1。finally语句来最后清理,如果指定范围的元素本身有id将其恢复为old,没有则去掉临时的id属性"__sizzle__"。

?

[转自:http://www.jzxue.com/wangzhankaifa/javascript-ajax/201103/30-6951.html]

热点排行