HTML Dom querySelector
2015-06-19 15:34
225 查看
js中通过css选择器查询dom有2个方法,
querySelector:返回文档中匹配指定 CSS 选择器的第一个元素
比如baseElemet.querySelector('P');
querySelectorAll:返回文档中匹配指定
CSS 选择器的所有元素
比如baseElemet.querySelectorAll('P');
当baseElemet为document时一般没有问题,但是当baseElemet为一个普通的dom节点时,有时查询的范围并不是理想的在baseElemet里面,而是在整个
doucument下。这里可以增加一段处理(参考jq中),为baseElemet增加一个id属性的查询,如果没有id属性可以先添加,最后用完了删除掉。
querySelector:返回文档中匹配指定 CSS 选择器的第一个元素
比如baseElemet.querySelector('P');
querySelectorAll:返回文档中匹配指定
CSS 选择器的所有元素
比如baseElemet.querySelectorAll('P');
当baseElemet为document时一般没有问题,但是当baseElemet为一个普通的dom节点时,有时查询的范围并不是理想的在baseElemet里面,而是在整个
doucument下。这里可以增加一段处理(参考jq中),为baseElemet增加一个id属性的查询,如果没有id属性可以先添加,最后用完了删除掉。
<!DOCTYPE HTML> <html> <head> <title> New Document </title> </head> <body> <div id="test" class="test"> <p>test</p> </div> </body> <script type="text/javascript"> //处理函数 function bmQuerySelector(selector,context){ context=context || document; if(context===document){ //如果文档为document则直接处理 return context.querySelectorAll(selector); } else{ var oldid,newid="_newid_"; try{ oldid=context.getAttribute("id"); //如果原来文档不存在id属性,帮它添加一个 if(!oldid){ context.setAttribute("id",newid); } newid=oldid || oldid; //在原来选择器的基础上增加id属性的筛选 return context.querySelectorAll("[id='" + newid +"'] " + selector); } catch(error){ } finally{ //如果原来文档中不存在id属性,需要移除掉 if(!oldid){ context.removeAttribute("id"); } } } } var baseElement=document.getElementById("test"); alert(bmQuerySelector('.test p',baseElement));//没结果 alert(baseElement.querySelectorAll(".test p"));//有结果 </script> </html>
相关文章推荐
- MonkyTalk学习-5-TestSuite
- moqui框架介绍
- 传智播客网页平面UI入驻武汉校区
- WebUI-自用
- 清除Windows Genuine Advantage
- Qt5官方demo分析集10——Qt Quick Particles Examples - Emitters
- pip virtualenv requirements
- dojo.require()的相关理解
- ArrayDeque源码图析
- 自定义UITableViewCell
- Win10正式版7月29日将至 Build 10147全新壁纸先行
- iOS 改变UITextField中光标颜色
- 手写TextField的方法,让键盘放弃第一响应隐藏的方法
- WPF使用ThreadPool.QueueUserWorkItem线程池防界面假死
- IOS开发UIView之动画效果的实现方法(合集)
- extjs Ext.Ajax.request 同步和异步
- Unable to chmod /system/build.prop.: Read-only file system
- 清除UITableView底部多余的分割线
- iOS UITapGestureRecognizer 获取触摸CGPoint
- UIMenuController使用