實現一個jQuery的API心得

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
    <style>
        .red{ background:red; } 
        .blue{ background:blue }
    </style>
</head>
<body>
    <div id='xxx'>nihao</div>
    <div>nihao</div>
    <div>nihao</div>
    <div>nihao</div>
    <div>nihao</div>
<script> 
window.jQuery = function (nodeOrSelector) { 
    var node
    if(typeof nodeOrSelector==='string'){
        node=document.querySelector(nodeOrSelector)
    }else{
        node=nodeOrSelector
    }
    var allChildren = node.parentNode.children
    return{
        addClass:function(color){
            for (let i = 0; i < allChildren.length; i++) {
                allChildren[i].classList.add(color)   
            }
        },
        text:function(text){
            if(text===undefined){
                var texts=[]
                for (let i = 0; i < allChildren.length; i++) {
                    texts.push(allChildren[i].textContent)
                }
                return texts
            }
            else{
                for (let i = 0; i < allChildren.length; i++){ 
                    allChildren[i].textContent=text 
                }
            }
            
        }               
    }   
} 
window.$ = jQuery
var $div = $('div')
$div.addClass('blue') // 可將所有 div 的 class 添加一個 red
$div.text('hi') // 可將所有 div 的 textContent 變?yōu)?hi
</script>
</body>
</html>

1.通過在window.jQuery上添加一個函數聲明命名空間逗爹,從而防止全局變量的產生谷市。

  1. 考慮到用戶可能傳入的是一個節(jié)點或者是字符串蛔垢,用 typeof nodeOrSelector==='string'進行判斷。(這里很容易把typeof打成typeOf)
  2. 取到用戶輸出的節(jié)點后用node.parentNode.children來選擇所有兄弟節(jié)點(包括自己)(如果要只選擇兄弟節(jié)點可以對其遍歷迫悠,剔除自身)
  3. 返回兩個方法鹏漆,調用對象的方法傳入必要參數。
  4. 調取方法時先判斷是否傳入了參數從而將設置text和獲取功能合二為一创泄。
?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末艺玲,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子鞠抑,更是在濱河造成了極大的恐慌饭聚,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,627評論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件搁拙,死亡現場離奇詭異秒梳,居然都是意外死亡,警方通過查閱死者的電腦和手機箕速,發(fā)現死者居然都...
    沈念sama閱讀 95,180評論 3 399
  • 文/潘曉璐 我一進店門酪碘,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人盐茎,你說我怎么就攤上這事兴垦。” “怎么了庭呜?”我有些...
    開封第一講書人閱讀 169,346評論 0 362
  • 文/不壞的土叔 我叫張陵滑进,是天一觀的道長。 經常有香客問我募谎,道長扶关,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 60,097評論 1 300
  • 正文 為了忘掉前任数冬,我火速辦了婚禮节槐,結果婚禮上,老公的妹妹穿的比我還像新娘拐纱。我一直安慰自己铜异,他們只是感情好,可當我...
    茶點故事閱讀 69,100評論 6 398
  • 文/花漫 我一把揭開白布秸架。 她就那樣靜靜地躺著揍庄,像睡著了一般。 火紅的嫁衣襯著肌膚如雪东抹。 梳的紋絲不亂的頭發(fā)上蚂子,一...
    開封第一講書人閱讀 52,696評論 1 312
  • 那天沃测,我揣著相機與錄音,去河邊找鬼食茎。 笑死蒂破,一個胖子當著我的面吹牛,可吹牛的內容都是我干的别渔。 我是一名探鬼主播附迷,決...
    沈念sama閱讀 41,165評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼哎媚!你這毒婦竟也來了喇伯?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 40,108評論 0 277
  • 序言:老撾萬榮一對情侶失蹤拨与,失蹤者是張志新(化名)和其女友劉穎艘刚,沒想到半個月后,有當地人在樹林里發(fā)現了一具尸體截珍,經...
    沈念sama閱讀 46,646評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 38,709評論 3 342
  • 正文 我和宋清朗相戀三年箩朴,在試婚紗的時候發(fā)現自己被綠了岗喉。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,861評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡炸庞,死狀恐怖钱床,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情埠居,我是刑警寧澤查牌,帶...
    沈念sama閱讀 36,527評論 5 351
  • 正文 年R本政府宣布,位于F島的核電站滥壕,受9級特大地震影響纸颜,放射性物質發(fā)生泄漏。R本人自食惡果不足惜绎橘,卻給世界環(huán)境...
    茶點故事閱讀 42,196評論 3 336
  • 文/蒙蒙 一胁孙、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧称鳞,春花似錦涮较、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,698評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至熙暴,卻和暖如春闺属,著一層夾襖步出監(jiān)牢的瞬間慌盯,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,804評論 1 274
  • 我被黑心中介騙來泰國打工屋剑, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留润匙,地道東北人。 一個月前我還...
    沈念sama閱讀 49,287評論 3 379
  • 正文 我出身青樓唉匾,卻偏偏與公主長得像孕讳,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子巍膘,可洞房花燭夜當晚...
    茶點故事閱讀 45,860評論 2 361

推薦閱讀更多精彩內容

  • 轉載請聲明出處 博客原文 隨手翻閱以前的學習筆記厂财,順便整理一下放在這里,方便自己復習峡懈,也希望你有也有幫助吧 第一課...
    程序員poetry閱讀 12,676評論 13 94
  • 個人博客:https://yeaseonzhang.github.io 花了半個多月的時間璃饱,終于又把“JS紅寶書”...
    Yeaseon閱讀 11,537評論 9 52
  • 第1章 認識JS JavaScript能做什么?1.增強頁面動態(tài)效果(如:下拉菜單肪康、圖片輪播荚恶、信息滾動等)2.實現...
    mo默22閱讀 1,306評論 0 5
  • 文/一趣一回 我叫小白,一干二凈的白磷支,白日夢的白谒撼。 我有夢想有目標,有激情也對生活充滿期待雾狈。 曾經的我聽到有人說夢...
    一趣一回閱讀 266評論 0 1
  • 今年初爆紅的美劇《Billions》廓潜,讓我們看到美國商業(yè)大亨波比和檢察官查克飆戲,不得不感嘆飆的過癮善榛,看到了在金錢...
    DanielPan閱讀 624評論 0 1