亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

js 模仿jQuer實現添加類名方法

js 模仿jQuer實現添加類名方法

慕前端8664132 2017-05-05 23:31:58
如:var doc=document.getElementById("id");doc.addClass(className);直接可以像jQuery一樣可以打點.調用的。
查看完整描述

1 回答

已采納
?
千秋此意

TA貢獻158條經驗 獲得超188個贊

//?順手寫的demo肯定不完善,真要用自己寫個addClass函數吧
HTMLElement.prototype.addClass?=?function(sClass)?{
????if?(new?RegExp(sClass).test(this.className))?return;
????this.className?+=?!this.className.length???sClass?:?'?'?+?sClass;
}

你要在原生的DOM對象上直接用 . 來調用,可以直接對HTMLElement的原型進行擴展。。當然jQuery不是這么做的,你在使用 $('div').addClass('sClass');這些方法的時候操作的并不是原生的DOM對象,而是通過jQuery包裝過的對象,包裝后的jQuery對象上就帶有了各種各樣的jQuery方法,所以你都能直接在那些對象上用 . 來調用


———— 再補充個例子 ————

function?$(elem)?{
????return?new?baseObj(elem);
}

function?baseObj(elem)?{
????this.elem?=?elem;
}

baseObj.prototype?=?{
????addClass:?function(sClass)?{
????????this.elem.className?+=?'?'?+?sClass;
????}
}

jQuery的包裝過程大概類似這樣 用$選擇器拿到的對象是包裝后的jQuery對象,并不是原生的js對象

查看完整回答
2 反對 回復 2017-05-06
  • 慕前端8664132
    慕前端8664132
    老師,你已經非常6了
  • 千秋此意
    千秋此意
    額。。你能采納就已經足夠啦,而且我也不是什么老師啊。。同樣在自學罷了。。
  • 1 回答
  • 0 關注
  • 1567 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號