js选择器和jquery选择器的比较
2016-05-26 20:57
501 查看
document.getElementById("#id")根据id属性来选择
document.getElementsByClassName根据class属性来选择,注意这里class可能有多个的,所以要加s,可是这个好像具有兼容性呢,在ie8及其以下浏览器中,不能使用。解决:加入兼容性判断,在需要用到该方法的位置修改为getClassNames方法。用下面这个方法来解决兼容性问题吧。
var divs = getClassNames('tabs_div' , 'div');
function getClassNames(classStr,tagName){
if (document.getElementsByClassName) {
return document.getElementsByClassName(classStr)
}else {
var nodes = document.getElementsByTagName(tagName),ret = [];
for(i = 0; i < nodes.length; i++) {
if(hasClass(nodes[i],classStr)){
ret.push(nodes[i])
}
}
return ret;
}
}
function hasClass(tagStr,classStr){
var arr=tagStr.className.split(/\s+/ ); //这个正则表达式是因为class可以有多个,判断是否包含
for (var i=0;i<arr.length;i++){
if (arr[i]==classStr){
return true ;
}
}
return false ;
}
document.getElementsByTagName根据标签名来选择,标签就是html里面的那些div a p等等等啦,注意到这里加s了。它得到的是一个数组。所以有时看到document.getElementsByTagName("p")[0]是取得第一个p标签。但是也有兼容性。呼,心累啊,怎么就不能友好的玩耍呢?
解决方法
var getElementsByName = function(tag,name){
var returns = document.getElementsByName(name);
if(returns.length > 0)
return returns;
returns = new Array();
var e = document.getElementsByTagName(tag);
for(var i = 0; i < e.length; i++){
if(e[i].getAttribute("name") == name){
returns[returns.length] = e[i];
}
}
return returns;
}
在来说说jquery的一些了两个选择器
querySelector()这个里面可以是class,也可以是id属性。querySeletor(".classname")/querySeletor("$id")
querySelectorAll()和上面的区别就是,上面的只能选择一个,就是最开始的一个,而这个有了all就可以选择所有符合条件的
而且它更加灵活
document.querySelector('input[type='text']')或者document.querySelector('div>li:first-child')
document.getElementsByClassName根据class属性来选择,注意这里class可能有多个的,所以要加s,可是这个好像具有兼容性呢,在ie8及其以下浏览器中,不能使用。解决:加入兼容性判断,在需要用到该方法的位置修改为getClassNames方法。用下面这个方法来解决兼容性问题吧。
var divs = getClassNames('tabs_div' , 'div');
function getClassNames(classStr,tagName){
if (document.getElementsByClassName) {
return document.getElementsByClassName(classStr)
}else {
var nodes = document.getElementsByTagName(tagName),ret = [];
for(i = 0; i < nodes.length; i++) {
if(hasClass(nodes[i],classStr)){
ret.push(nodes[i])
}
}
return ret;
}
}
function hasClass(tagStr,classStr){
var arr=tagStr.className.split(/\s+/ ); //这个正则表达式是因为class可以有多个,判断是否包含
for (var i=0;i<arr.length;i++){
if (arr[i]==classStr){
return true ;
}
}
return false ;
}
document.getElementsByTagName根据标签名来选择,标签就是html里面的那些div a p等等等啦,注意到这里加s了。它得到的是一个数组。所以有时看到document.getElementsByTagName("p")[0]是取得第一个p标签。但是也有兼容性。呼,心累啊,怎么就不能友好的玩耍呢?
解决方法
var getElementsByName = function(tag,name){
var returns = document.getElementsByName(name);
if(returns.length > 0)
return returns;
returns = new Array();
var e = document.getElementsByTagName(tag);
for(var i = 0; i < e.length; i++){
if(e[i].getAttribute("name") == name){
returns[returns.length] = e[i];
}
}
return returns;
}
在来说说jquery的一些了两个选择器
querySelector()这个里面可以是class,也可以是id属性。querySeletor(".classname")/querySeletor("$id")
querySelectorAll()和上面的区别就是,上面的只能选择一个,就是最开始的一个,而这个有了all就可以选择所有符合条件的
而且它更加灵活
document.querySelector('input[type='text']')或者document.querySelector('div>li:first-child')
相关文章推荐
- jquery中的on方法绑定动态元素
- 使用jQuery制作Web页面遮罩层插件的实例教程
- js和jQuery以及easyui实现对下拉框的指定赋值
- Jquery 自定义弹窗等待
- jQuery全选功能
- 获取$.post $.get回调函数返回值问题
- jQuery中两种阻止事件冒泡的区别
- 使用JQuery把元素Div弹出与关闭
- 使用jquery插件报错:TypeError:$.browser is undefined的解决方法
- jquery ajax 无刷新分页
- web前端35个jQuery小技巧!
- jQuery.extend 函数详解
- Jquery 动态生成li标签以及单击事件的绑定
- jquery form表单序列号
- jquery-$()参数详解
- 【转载】jQuery手机移动端触屏日历日期选择
- jquery.form.js框架实现文件上传功能案例解析(springmvc)
- jquery全选框的实现
- jQuery过滤特殊字符及JS字符串转为数字
- jquery+ajax实现多个下拉选之间的关联