jqueryone函數(shù)方法實(shí)現(xiàn)
來(lái)源:懂視網(wǎng)
責(zé)編:小采
時(shí)間:2020-11-27 20:18:43
jqueryone函數(shù)方法實(shí)現(xiàn)
jqueryone函數(shù)方法實(shí)現(xiàn):jquery中有一個(gè)方法:one,用途是事件綁定只執(zhí)行一次就自動(dòng)解除綁定。源碼看了很久頭暈,決定自己搞一個(gè)。研究了很久,用原生的模擬了一次。我用的名字是once。最初的方法是這樣的:function once(dom, event, callback) { // 這一步是為了避免修
導(dǎo)讀jqueryone函數(shù)方法實(shí)現(xiàn):jquery中有一個(gè)方法:one,用途是事件綁定只執(zhí)行一次就自動(dòng)解除綁定。源碼看了很久頭暈,決定自己搞一個(gè)。研究了很久,用原生的模擬了一次。我用的名字是once。最初的方法是這樣的:function once(dom, event, callback) { // 這一步是為了避免修

jquery中有一個(gè)方法:one,用途是事件綁定只執(zhí)行一次就自動(dòng)解除綁定。源碼看了很久頭暈,決定自己搞一個(gè)。研究了很久,用原生的模擬了一次。我用的名字是once。
最初的方法是這樣的:
function once(dom, event, callback) {
// 這一步是為了避免修改形參
var temp = callback;
dom.addEventListener(event, function() {
if(temp)
temp();
temp = null;
})
}
這種方法是可以的,但有個(gè)問(wèn)題,事件處理函數(shù)依然存在,只是什么都不執(zhí)行而已,久而久之會(huì)變得十分臃腫。
替代方法變成在處理函數(shù)里解除本身,但如果用匿名函數(shù)的話(huà),會(huì)陷入可怕的無(wú)限遞歸。
用變量存儲(chǔ)的話(huà)就能解決了。
function once(dom, event, callback) {
var handle = function() {
callback();
dom.removeEventListener(event, handle);
}
dom.addEventListener(event, handle)
}
閑暇娛樂(lè)之作,希望能幫到一些人。
聲明:本網(wǎng)頁(yè)內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問(wèn)題請(qǐng)及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com
jqueryone函數(shù)方法實(shí)現(xiàn)
jqueryone函數(shù)方法實(shí)現(xiàn):jquery中有一個(gè)方法:one,用途是事件綁定只執(zhí)行一次就自動(dòng)解除綁定。源碼看了很久頭暈,決定自己搞一個(gè)。研究了很久,用原生的模擬了一次。我用的名字是once。最初的方法是這樣的:function once(dom, event, callback) { // 這一步是為了避免修