本文講述的是怎樣在不使用js原生和jquery提供的api,實現和jquery一樣的效果。
舉例:addclass(新增類名)
複製**
第一步:獲取物件
如果我們要給第二個li加類名:
var litag=document.queryselector('ul li:nth-child(2)')複製**
第二步:給這個li新增類名
litag.classlist.add('checkli')複製**
第三步:封裝成乙個函式方便呼叫
function
addclass
()複製**
第四步:把變數換成引數傳入
function addclass(selector,newclassname)複製**
第五步:呼叫函式,新增類名
addclass.call('undefined','ul>li:nth-child(2)','red');
複製**
如果想要選擇多個li,就要變成這樣:
function addclass(selector,newclassname)
***.addclass.call(***,'red')//此處***就是this,也可以直接寫作this複製**
2:把這個方法再包一層方法名再呼叫
var addclass2=function(selector)else
return
}} var litag=addclass2.call('undefined',"#***");
litag.addclass.call('undefined','red');
複製**
如果把上面的addclass2換成jquery,再用$替換jquery,如下所示:
window.jquery=function(nodeorselector)else
return ,
settext:function(text) }}
window.$ = jquery;
var $div = $('div')
$div.addclass('red')//給所有div新增類名
$div.settext('hi')//給所有div設定內容文字
複製**
以上即jquery實現原理,jquery的本質是乙個建構函式,接受我們傳入的引數,然後根據js的原生api操作引數對應的節點,返回乙個結果。
call用法:
call(引數1,引數2),call的第乙個引數就是this,剩下的引數都是arguments,this一般指向呼叫函式的那個物件,使用call時第乙個引數不可省略,沒有特別說明時可以設定undefined,在普通模式下,如果this是undefined,瀏覽器會自動把this變成window;如果是嚴格模式下,this就是undefined本身。
瀑布流實現原理( jQuery 實現 )
1.什麼是瀑布流 為什麼要使用瀑布流 由於尺寸的大小不同,我們為了用最合適的比例來展示,就需要讓自己去確定最終的高度。但是自定義高度會使得每一項的高度不一致而使頁面顯得混亂,故我們可以使用瀑布流來確定元素的定位位置。瀑布流的定義 元素自判斷顯示區域中,那一列的高度最低,則在那一列顯示。2.瀑布流具體...
jquery鏈式DOM的實現原理
dom鏈式呼叫的處理 1.節約js 2.所返回的都是同乙個物件,可以提高 的效率。dom的必要點 1.通過簡單擴充套件原型方法並通過return this的形式來實現跨瀏覽器的鏈式呼叫。2.利用js下的簡單工廠模式,來將所有對於同乙個dom物件的操作指定同乙個例項。定義乙個js類function d...
jquery 中jsonp的實現原理
在同源策略下,在某個伺服器下的頁面是無法獲取到該伺服器以外的資料的,即一般的 ajax 是不能進行跨域請求的。但 img iframe script 等標籤是個例外,這些標籤可以通過 src屬性請求到其他伺服器上的資料。利用 script 標籤的開放策略,我們可以實現跨域請求資料,當然這需要伺服器端...