部分浏览器中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]