JQuery的off()方法是用于解除事件綁定的函數(shù)。JQuery中的事件綁定是通過on()方法來進(jìn)行的,而off()則是用來解除on()所綁定的事件的。那么,我們來看看jquery off源碼實(shí)現(xiàn)的原理吧。
jQuery.fn.off = function(types, selector, fn) { var i, j, len; //如果沒有傳入?yún)?shù),則注銷所有事件 if (types && types.preventDefault && types.handleObj) { // ( event ) dispatched jQuery.Event var handleObj = types.handleObj; jQuery( types.delegateTarget ).off( handleObj.namespace ? handleObj.origType + "." + handleObj.namespace : handleObj.origType, handleObj.selector, handleObj.handler ); return this; } //處理參數(shù)selectors if (typeof types === "object") { // ( types-object [, selector] ) for (j in types) { this.off(j, selector, types[j]); } return this; } if (selector === false || typeof selector === "function") { // ( types [, fn] ) fn = selector; selector = undefined; } //如果fn是false 或者是function,則將selector置為空 if (fn === false) { fn = returnFalse; } for (i = 0, len = this.length; i< len; i++) { jQuery.event.remove(this[i], types, fn, selector); } return this; };
我們可以看到,off()方法的源碼實(shí)現(xiàn)主要是針對(duì)傳入的參數(shù)的不同情況進(jìn)行了不同的處理,最后的處理程序是利用jQuery的事件處理程序remove()方法來解除事件綁定。
總的來說,jquery off源碼是非常好理解的,通過了解源碼的實(shí)現(xiàn)原理,我們可以更好地理解和運(yùn)用off()方法。