JS模拟jQuery选择器

JavaScript模拟jQuery选择器

实现了以下五种选择方法:

$("#id") 

$(".class") 

$("tag") 

$("tag#id") 

$("tag.class")

 

 1 function $(strSelector){
 2     var reId=/#/g;
 3     var reClass=/\./g;
 4     
 5     /* 通过 class 获取元素 */
 6     function getByClass(sClass){
 7         var arrE=[];
 8         var allE=document.getElementsByTagName("*");
 9         var re=new RegExp("\\b" + sClass + "\\b","g");
10         
11         for(var i=0;i<allE.length;i++){
12             if(allE[i].className.toString().search(re) !=-1){
13                 arrE.push(allE[i]);
14             }
15         }
16         return arrE;
17     }
18     
19     
20     /* 包含 # 情况--- id 选择器 */
21     if(reId.test(strSelector)){
22         var eId=strSelector.split("#");
23         
24         if(eId[0]!=""){
25             var isTag=document.getElementsByTagName(eId[0]);
26             var isId= document.getElementById(eId[1]);
27             
28             for(var i=0;i<isTag.length;i++){
29                 if(isId.id == isTag[i].id){
30                     return isId;
31                 }
32             }
33         }
34         else{
35             return document.getElementById(eId[1]);
36         }
37     }
38     /* 包含 . 情况--- class 选择器 */
39     else if(reClass.test(strSelector)){
40         var eClass=strSelector.split(".");
41         
42         if(eClass[0]!=""){
43             var isTag=document.getElementsByTagName(eClass[0]);
44             var isClass= getByClass(eClass[1]);
45             var arr=[];
46             
47             for(var i=0;i<isTag.length;i++){
48                 for(s=0;s<isClass.length;s++){
49                     if(isClass[s].className == isTag[i].className){
50                         arr.push(isClass[s]);
51                     }
52                 }
53             }
54             
55             return arr;
56         }
57         else{
58             return getByClass(eClass[1]);
59         }
60     }
61     /* 获取 tag 符合的元素 */
62     else{
63         return document.getElementsByTagName(strSelector);
64     }
65 }

 

转载于:https://www.cnblogs.com/share-qiang/p/4507911.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值