日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

querySelectorAll选择器的js实现

發布時間:2023/12/13 综合教程 30 生活家
生活随笔 收集整理的這篇文章主要介紹了 querySelectorAll选择器的js实现 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

自從標準瀏覽器增加了querySelector這個類JQ的方法后,選擇一個元素變成了一件so easy的事情。但是某些瀏覽器還是不支持。使用jq庫又有點太大,其實可以自己動手實現這個選擇器,具體代碼如下

    function getByClass(sele,parent){
            var parent = parent||document;
            if(parent.querySelectorAll){
                return parent.querySelectorAll(sele);
            }else if(parent.getElementsByClassName){
                return parent.getElementsByClassName(sele.slice(1));
            }else{
                var tags = parent.getElementsByTagName("*");
                var targets=[];
                for(var i=0;i<tags.length;i++){
                    if(tags[i].className.indexOf(sele.slice(1))>-1){
                        targets.push(tags[i]);
                    }
                }
                return targets;
            }
        }
        function find(sele,parent){
            var parent=parent||document;
            // console.log("sele:",sele,";parent:",parent);
            var selectorArr = sele.split(/s+/);
            var selector = selectorArr.shift();
            // console.log("selector:",selector);
            var targets=[];
            if(selector.indexOf("#")>-1){
                targets.push(document.getElementById(selector.slice(1)));
            }else if(selector.indexOf(".")>-1){
                targets=getByClass(selector,parent);
            }else{
                targets = parent.getElementsByTagName(selector);
            }
            var result=[];
            if(selectorArr.length>0){
                for(var i=0;i<targets.length;i++){
                    var tempResult=Array.prototype.slice.call(find(selectorArr.join(" "),targets[i]),0);
                    result=result.concat(tempResult);
                }
            }else{
                return targets;
            }
            return result;
        }

原理是將網友傳入的參數分解,前面的通過迭代選擇不斷的更新父元素,最后一個選擇器就是在父元素的子元素中選擇匹配的元素。

案例網址:http://imgad0.pconline.com.cn/ivy/image/20172/21/14876672047970.html

總結

以上是生活随笔為你收集整理的querySelectorAll选择器的js实现的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。