JQuery的off()方法是用于解除事件綁定的函數。JQuery中的事件綁定是通過on()方法來進行的,而off()則是用來解除on()所綁定的事件的。那么,我們來看看jquery off源碼實現的原理吧。
jQuery.fn.off = function(types, selector, fn) { var i, j, len; //如果沒有傳入參數,則注銷所有事件 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; } //處理參數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()方法的源碼實現主要是針對傳入的參數的不同情況進行了不同的處理,最后的處理程序是利用jQuery的事件處理程序remove()方法來解除事件綁定。
總的來說,jquery off源碼是非常好理解的,通過了解源碼的實現原理,我們可以更好地理解和運用off()方法。
上一篇jquery ole