Jquery是一個著名的JavaScript庫,其擁有眾多實用的功能。其中之一是事件處理,而其中最重要的部分是off()函數。off()函數用于解除元素上綁定的事件,它的源碼實現如下:
jQuery.fn.off = function(types, selector, fn) { var handleObj, type; if (types && types.preventDefault && types.handleObj) { handleObj = types.handleObj; jQuery(types.delegateTarget).off( handleObj.namespace ? handleObj.origType + "." + handleObj.namespace : handleObj.origType, handleObj.selector, handleObj.handler ); return this; } if (typeof types === "object") { for (type in types) { this.off(type, selector, types[type]); } return this; } if (selector === false || typeof selector === "function") { fn = selector; selector = undefined; } if (fn === false) { fn = returnFalse; } return this.each(function() { jQuery.event.remove(this, types, fn, selector); }); };
可以看到,off()函數接受三個參數:types、selector和fn。其中,types表示要解除的事件類型,selector表示要解除事件的元素,而fn則是綁定的事件處理函數。off()函數實現起來也比較簡單,利用jQuery.event.remove()方法來去除事件綁定。
首先,如果types的類型是object,則對每一個屬性進行遞歸解除。如果selector為false或為function,則該參數代表fn;如果fn為false,則將其設置為jQuery.event.returnValue(),即false。最后,每個選擇器都會調用jQuery.event.remove()方法來去除已綁定的事件。
在開發中,使用off()函數可以方便地去除無用的事件處理函數,以避免造成性能上的浪費。同時,也能夠避免一些意外的bug,特別是在一些復雜的網站中使用多種JavaScript庫的情況下。
下一篇消息彈出款樣式css