原生js的一些兼容封裝

獲取Dom元素

/**
@selector:類似jq的$,但是不能識(shí)別派生選擇器。
@parent:父類元素(可選)
*/
//封裝一個(gè)$函數(shù)从撼,可以通過id况褪,標(biāo)簽,還可以類名撼唾。
function $(selector,parent){
    //判斷是否輸入對(duì)象。
    parent = parent ||document;
    //截取字符串第一個(gè)字符。
    var firstChar = selector.charAt(0);
    if(firstChar =="#"){//判斷是否是通過id
        return document.getElementById(str.substring(1));
    }else if(firstChar =="."){//判斷是否是通過類名
        var newStr = selector.substring(1);//截取第一個(gè)之后的所有字符
        var arrNew = [];//聲明一個(gè)數(shù)組
        var arrNew1 = [];//聲明一個(gè)數(shù)組
        var arr = parent.getElementsByTagName("*");//獲取在對(duì)象下的所有標(biāo)簽蜒滩。
        for(var i = 0; i<arr.length;i++){
            if(arr[i].className != ""){//判斷類不為空的標(biāo)簽
                arrNew = arr[i].className.split(" ");//將類轉(zhuǎn)換成數(shù)組
                if(arrNew.indexOf(newStr) != -1){//找好適配的標(biāo)簽
                    arrNew1.push(arr[i]);//放入新數(shù)組。
                }
            }
        }
        return arrNew1;//返回這個(gè)數(shù)組奶稠。
    }else{//否則就是通過標(biāo)簽
        return parent.getElementsByTagName(selector);
    }
}

獲取樣式表里的樣式

/*
@obj:要獲取樣式的元素
@attr:要獲取的樣式
*/
//獲取樣式表里的樣式俯艰,全兼容。
function getStyle(obj,attr){
    //因?yàn)閏urrentStyle火狐和谷歌不支持會(huì)顯示Undefined的锌订,所以放前面竹握,而getComputedStyle這個(gè)ie低版本不支持會(huì)直接報(bào)錯(cuò)。
    return obj.currentStyle?obj.currentStyle[attr]:obj.getComputedStyle[attr];
}

添加和移除類名

  • 添加(優(yōu)化原生防止重復(fù)添加)
/*
@obj:要添加類的元素
@myClass:要添加的類辆飘。
*/
//封裝一個(gè)添加類的函數(shù)
function addClass(obj,myClass){
    if(obj.className=="" ){//判斷class是否為空
        obj.className = myClass;//是啦辐,直接給class賦值
    }else{
        var str = obj.className;//獲取class
        var arr = str.split(" ");//將class按空格切割,然后裝如數(shù)組蜈项。
        if(arr.indexof(myClass) ==-1){//判斷是否存有相同的
            obj.className += " "+myClass;//沒有芹关,就將新的類名 重新賦值給class(類)
        }
    }
}
  • 移除類(優(yōu)化原生防止重復(fù)添加)
/*
@obj:要添加類的元素
@myClass:要添加的類。
*/
//封裝一個(gè)刪除類的函數(shù)紧卒。
function removeClass(obj,myClass){
    if(obj.className != ""){
        var str = obj.className;//獲取class
        var arr = str.split(" ");//將class按空格切割侥衬,然后裝如數(shù)組。
        if(arr.indexof(myClass) !=-1){//判斷是否存有相同的
            arr.splice(arr.indexof(myClass),1);//將存在的刪除
            obj.className = arr.join(" ");//將刪除后數(shù)組的值重新賦值給class(類)
        }
    }
}

阻止事件冒泡

事件冒泡允許多個(gè)操作被集中處理(把事件處理器添加到一個(gè)父級(jí)元素上跑芳,避免把事件處理器添加到多個(gè)子級(jí)元素上)轴总,它還可以讓你在對(duì)象層的不同級(jí)別捕獲事件。

<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title></title>
    <style>
![Uploading 阻止事件冒泡_300294.gif . . .]

        #father{
            width: 300px;
            height: 300px;
            background-color: aquamarine;
            margin: 100px;
        }
        #son{
            width: 100px;
            height: 100px;
            background-color: greenyellow;
        }
    </style>
</head>
<body>
<!--父子-->
<div id="father">
    <div id="son"></div>
</div>
</body>
<script>
    var father = document.getElementById("father");
    var son = document.getElementById("son");

    father.onmouseout = function (){
        alert("1233");
    }

    son.onmouseout = function (event){
        alert("123");
        var event = event||window.event;
        if(event.stopPropagation){
            event.stopPropagation();
        }else{
            //IE低版本
            event.cancelBubble = true;
        }
    }
</script>
</html>
組件事件冒泡.gif
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末博个,一起剝皮案震驚了整個(gè)濱河市怀樟,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌坡倔,老刑警劉巖漂佩,帶你破解...
    沈念sama閱讀 211,042評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件脖含,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡投蝉,警方通過查閱死者的電腦和手機(jī)养葵,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,996評(píng)論 2 384
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來瘩缆,“玉大人关拒,你說我怎么就攤上這事∮褂椋” “怎么了着绊?”我有些...
    開封第一講書人閱讀 156,674評(píng)論 0 345
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)熟尉。 經(jīng)常有香客問我归露,道長(zhǎng),這世上最難降的妖魔是什么斤儿? 我笑而不...
    開封第一講書人閱讀 56,340評(píng)論 1 283
  • 正文 為了忘掉前任剧包,我火速辦了婚禮,結(jié)果婚禮上往果,老公的妹妹穿的比我還像新娘疆液。我一直安慰自己,他們只是感情好陕贮,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,404評(píng)論 5 384
  • 文/花漫 我一把揭開白布堕油。 她就那樣靜靜地躺著,像睡著了一般肮之。 火紅的嫁衣襯著肌膚如雪掉缺。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,749評(píng)論 1 289
  • 那天戈擒,我揣著相機(jī)與錄音攀圈,去河邊找鬼。 笑死峦甩,一個(gè)胖子當(dāng)著我的面吹牛赘来,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播凯傲,決...
    沈念sama閱讀 38,902評(píng)論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼犬辰,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了冰单?” 一聲冷哼從身側(cè)響起幌缝,我...
    開封第一講書人閱讀 37,662評(píng)論 0 266
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎诫欠,沒想到半個(gè)月后涵卵,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體浴栽,經(jīng)...
    沈念sama閱讀 44,110評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,451評(píng)論 2 325
  • 正文 我和宋清朗相戀三年轿偎,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了典鸡。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,577評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡坏晦,死狀恐怖萝玷,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情昆婿,我是刑警寧澤球碉,帶...
    沈念sama閱讀 34,258評(píng)論 4 328
  • 正文 年R本政府宣布,位于F島的核電站仓蛆,受9級(jí)特大地震影響睁冬,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜看疙,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,848評(píng)論 3 312
  • 文/蒙蒙 一痴突、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧狼荞,春花似錦、人聲如沸帮碰。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,726評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽殉挽。三九已至丰涉,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間斯碌,已是汗流浹背一死。 一陣腳步聲響...
    開封第一講書人閱讀 31,952評(píng)論 1 264
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留傻唾,地道東北人投慈。 一個(gè)月前我還...
    沈念sama閱讀 46,271評(píng)論 2 360
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像冠骄,于是被迫代替她去往敵國(guó)和親伪煤。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,452評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容

  • 在線閱讀 http://interview.poetries.top[http://interview.poetr...
    程序員poetry閱讀 114,308評(píng)論 24 450
  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 171,735評(píng)論 25 707
  • 一:在制作一個(gè)Web應(yīng)用或Web站點(diǎn)的過程中凛辣,你是如何考慮他的UI抱既、安全性、高性能扁誓、SEO防泵、可維護(hù)性以及技術(shù)因素的...
    Arno_z閱讀 1,141評(píng)論 0 1
  • If you miss the train I'm on 如果你錯(cuò)過了我做的火車 You will know th...
    方舟say閱讀 892評(píng)論 0 0
  • 《真實(shí)的幸附菖ⅲ》第4章:怎樣才能永遠(yuǎn)幸福 提出的困惑: 1足删、我的總體幸福程度如何?2肚邢、幸福感是天生的壹堰,還是后天的?3...
    大胡子逸舟閱讀 392評(píng)論 0 0