jQuery

jQuery 類似一個(gè)封裝好的函數(shù),提供給我們各種方法,同樣的需求下,使用 jQuery 讓開發(fā)者少敲很多代碼并且解決不同瀏覽器兼容性的問題。
補(bǔ)全以下代碼

window.jQuery = ???
window.$ = jQuery

var $div = $('div')
$div.addClass('red') // 可將所有 div 的 class 添加一個(gè) red
$div.setText('hi') // 可將所有 div 的 textContent 變?yōu)?hi

細(xì)節(jié)
封裝函數(shù)

function getSiblings(node){
    // write some code...
}

命名空間

命名空間可以防止污染全局變量。

var jQuery = {}
jQuery.getSiblings = function(node){ 
    // write some code...
}
jQuery.setText = function(node){
    // write some code...
}

// 調(diào)用函數(shù)時(shí)
jQuery.getSiblings(node)
jQuery.setText(node)

把node提前

// 調(diào)用函數(shù)時(shí)
node.getSiblings()
$node.getSiblings()

事實(shí)上, jQuery 的屬性和方法保存于 jQuery.prototype。不過這里不采用這種方法。

方法一:擴(kuò)展 Node 接口。直接在 Node.prototype 上加函數(shù)??赡艿娘L(fēng)險(xiǎn)是覆蓋原生的屬性和方法。

Node.prototype.getSiblings = function(){
    // write some code...
}

方法二:添加新的接口。這叫做「無(wú)侵入」。

window.jQuery = function(nodeOrString){
            let nodes = {};
            if (typeof nodeOrString === 'string'){
                var tmp = document.querySelectorAll(nodeOrString);
                for (var i = 0; i < tmp.length; i++) {
                    nodes[i] = tmp[i];
                }
                nodes.length = tmp.length;
            } else if (nodeOrString instanceof node){
                nodes = {
                    0: nodeOrString,
                    length: 1
                }
            }
            nodes.addClass = function(classes){
                for(var i = 0; i < nodes.length; i++) {
                    nodes[i].classList.add(classes);
                }
            }
            nodes.setText = function(text){
                for(var i = 0; i < nodes.length; i++) {
                    nodes[i].textContent = text;
                }
            }
            return nodes;
        }
window.$ = jQuery

var $div = $('div')
$div.addClass('red') // 可將所有 div 的 class 添加一個(gè) red
$div.setText('hi') // 可將所有 div 的 textContent 變?yōu)?hi
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • /*! jQuery JavaScript Library v1.4.2 http://jquery.com/ C...
    ssttIsme閱讀 2,020評(píng)論 2 0
  • 阮一峰jQuery 不要學(xué)jquery mobile 獲取某個(gè)節(jié)點(diǎn)的所有兄弟姐妹 ul>li[id=item$]{...
    tsl1127閱讀 403評(píng)論 0 2
  • 完整代碼 (function(global, factory) { typeof define === 'fun...
    tzujun閱讀 1,018評(píng)論 0 0
  • 1.JQuery 基礎(chǔ) 改變web開發(fā)人員創(chuàng)造搞交互性界面的方式。設(shè)計(jì)者無(wú)需花費(fèi)時(shí)間糾纏JS復(fù)雜的高級(jí)特性。 1....
    LaBaby_閱讀 1,508評(píng)論 0 2
  • 1.JQuery 基礎(chǔ) 改變web開發(fā)人員創(chuàng)造搞交互性界面的方式。設(shè)計(jì)者無(wú)需花費(fèi)時(shí)間糾纏JS復(fù)雜的高級(jí)特性。 1....
    LaBaby_閱讀 1,276評(píng)論 0 1

友情鏈接更多精彩內(nèi)容