最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

原生JS查找元素的方法(推薦)

 更新時(shí)間:2016年11月22日 10:13:26   投稿:jingxian  
下面小編就為大家?guī)?lái)一篇原生JS查找元素的方法(推薦)。小編覺(jué)得挺不錯(cuò)的,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧,祝大家游戲愉快哦

今天寫(xiě)了一個(gè)很簡(jiǎn)單、很粗暴的通過(guò)JS根據(jù)類來(lái)查找DOM元素。

為了降低它的粗暴等級(jí)(耗費(fèi)性能)我給了三個(gè)等級(jí)。

首先性能最好的,適合FF,CH,IE8,通過(guò)querySelectorAll這個(gè)API。

其次是指定ID

最后只能全頁(yè)面進(jìn)行匹配class,不過(guò)比較節(jié)省的性能的是,在指定class名稱的時(shí)候,同時(shí)傳入HTML標(biāo)簽的類型,用于節(jié)省遍歷的范圍!

因?yàn)樗接邢?,目前也只能?xiě)成這種,真的好好奇JQ的選擇器是怎么去匹配DOM的,如果有大神看到這篇文章,請(qǐng)不要吝嗇施教。。。

下面貼代碼:

function $(d,t){
    
    var c = null, // className 
      e = null, // element
      i = null; // id

    function type(p){
      /function.(\w*)\(\)/.test(p.constructor);
      return RegExp.$1.toLowerCase();
    }

    if(type(d) == 'string'){ 

      if(/^\.[a-z,A-Z,_]\w*$/.test(d)){ // 匹配class
        c = d;
      }else if(/^#[a-z,A-Z,_]\w*$/.test(d)){ // 匹配id
        i = d;
      }else if(/^[a-z,A-Z,_]+$/.test(d)){ // 匹配元素
        e = d;
      }else{
        return undefined;
      }
      if(document.querySelectorAll){ 

        if(c || e) return document.querySelectorAll(c || e);
        if(i) return document.querySelectorAll(i)[0];

      }else{
        if(c){
          var all = document.getElementsByTagName(t || '*'),
            cn = c.slice(1,c.length),
            reg = new RegExp('^'+cn+'\\b'), // 限定類名的起始,結(jié)束只要是相同字符結(jié)束即可。
            em = [];
            for(var i=0;i<all.length;i++){
              if(reg.test(all[i].className)){
                em.push(all[i])
              }
            }
            return em;
        }else if(e){
          return document.getElementsByTagName(e);
        }else if(i){
          return document.getElementById(i);
        }
      }
      
    }else{
      return undefined;
    }

  }

調(diào)用方式:

$('selector'[,type])

以上就是小編為大家?guī)?lái)的原生JS查找元素的方法(推薦)全部?jī)?nèi)容了,希望大家多多支持腳本之家~

相關(guān)文章

  • 最全的Javascript編碼規(guī)范(推薦)

    最全的Javascript編碼規(guī)范(推薦)

    本文給大家總結(jié)了js編碼規(guī)范知識(shí),非常實(shí)用,在日常程序開(kāi)發(fā)中經(jīng)??梢杂玫剑蠹覄?wù)必掌握
    2016-06-06
  • 解決layui表格內(nèi)文本超出隱藏的問(wèn)題

    解決layui表格內(nèi)文本超出隱藏的問(wèn)題

    今天小編就為大家分享一篇解決layui表格內(nèi)文本超出隱藏的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-09-09
  • js html5 css俄羅斯方塊游戲再現(xiàn)

    js html5 css俄羅斯方塊游戲再現(xiàn)

    這篇文章主要為大家詳細(xì)介紹了js html5 css俄羅斯方塊游戲?qū)崿F(xiàn)代碼,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-10-10
  • JavaScript對(duì)象的淺拷貝與深拷貝實(shí)例分析

    JavaScript對(duì)象的淺拷貝與深拷貝實(shí)例分析

    這篇文章主要介紹了JavaScript對(duì)象的淺拷貝與深拷貝,結(jié)合實(shí)例形式分析了javascript淺拷貝與深拷貝的原理、實(shí)現(xiàn)方法與相關(guān)操作技巧,需要的朋友可以參考下
    2018-07-07
  • JScript實(shí)現(xiàn)地址選擇功能

    JScript實(shí)現(xiàn)地址選擇功能

    這篇文章主要為大家詳細(xì)介紹了JScript實(shí)現(xiàn)地址選擇功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-08-08
  • 深入理解Webpack 中路徑的配置

    深入理解Webpack 中路徑的配置

    這篇文章主要給大家介紹了關(guān)于Webpack2中路徑配置的相關(guān)資料,文中介紹的非常詳細(xì),對(duì)大家具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起看看吧。
    2017-06-06
  • JS原型、原型鏈深入理解

    JS原型、原型鏈深入理解

    這篇文章主要針對(duì)javascript中的原型、原型鏈深入理解,原型是JavaScript中一個(gè)比較難理解的概念,本文為大家解決這個(gè)難題,感興趣的小伙伴們可以參考一下
    2016-02-02
  • JS實(shí)現(xiàn)的在線調(diào)色板實(shí)例(附demo源碼下載)

    JS實(shí)現(xiàn)的在線調(diào)色板實(shí)例(附demo源碼下載)

    這篇文章主要介紹了JS實(shí)現(xiàn)的在線調(diào)色板,可實(shí)現(xiàn)響應(yīng)鼠標(biāo)點(diǎn)擊動(dòng)態(tài)改變調(diào)色板顏色的功能,涉及JavaScript針對(duì)頁(yè)面元素屬性的動(dòng)態(tài)操作與計(jì)算技巧,并附帶demo源碼供讀者下載參考,需要的朋友可以參考下
    2016-03-03
  • javaScript封裝的各種寫(xiě)法

    javaScript封裝的各種寫(xiě)法

    這篇文章主要介紹了javaScript封裝的各種寫(xiě)法,通過(guò)列舉優(yōu)缺點(diǎn)和使用場(chǎng)景詳細(xì)介紹了幾種封裝的格式,需要的朋友可以參考下
    2017-08-08
  • 前端頁(yè)面禁止別人調(diào)試的方法

    前端頁(yè)面禁止別人調(diào)試的方法

    這篇文章主要介紹了前端頁(yè)面禁止別人調(diào)試的方法的相關(guān)資料,需要的朋友可以參考下
    2023-03-03

最新評(píng)論

光山县| 鲁甸县| 阿瓦提县| 句容市| 弥渡县| 梁平县| 进贤县| 涟水县| 广汉市| 九台市| 易门县| 许昌县| 甘德县| 铜鼓县| 庆城县| 上虞市| 应城市| 玉门市| 新疆| 吴忠市| 香格里拉县| 凌云县| 正定县| 稷山县| 祁门县| 沈丘县| 潢川县| 无棣县| 武宣县| 咸丰县| 灵川县| 南阳市| 乡城县| 蕉岭县| 日土县| 那曲县| 防城港市| 彭州市| 荆门市| 光泽县| 嵊州市|