javascript跨瀏覽器添加事件綁定 bind()
IE 的事件綁定函數是 attachEvent;而 Firefox, Safari 是 addEventListener;Opera 則兩種都支持。使用jQuery就可以使用簡單的bind(),或者$().click()之類的函數解決,而如果不使用JavaScript框架的時候,大家可是使用下面的封裝bind()函數。
/************************************
* 添加事件綁定
* @param obj : 要綁定事件的元素
* @param type : 事件名稱。不加 "on". 如 : "click" 而不是 "onclick".
* @param fn : 事件處理函數
************************************/
function bind( obj, type, fn ) {
if ( obj.attachEvent ) {
obj['e'+type+fn] = fn;
obj[type+fn] = function(){obj['e'+type+fn]( window.event );}
obj.attachEvent( 'on'+type, obj[type+fn] );
} else
obj.addEventListener( type, fn, false );
}
例如給document添加一個點擊事件
var fn=function() {
alert("Hello, World!!");
};
bind(document, "click", fn);
刪除事件綁定 unbind()
unbind()對於上面的bind()函數
/************************************
* 刪除事件綁定
* @param obj : 要刪除事件的元素
* @param type : 事件名稱。不加 "on". 如 : "click" 而不是 "onclick"
* @param fn : 事件處理函數
************************************/
function unbind( obj, type, fn ) {
if ( obj.detachEvent ) {
obj.detachEvent( 'on'+type, obj[type+fn] );
obj[type+fn] = null;
} else
obj.removeEventListener( type, fn, false );
}
例如刪除第一個綁定的document點擊事件:
unbind(document,"click",fn);
(轉摘自: http://www.js8.in/408.html)