`

JavaScript事件绑定方法

阅读更多

简单实用版:                                                                                        

function bind(elm, evType, fn, useCapture) {
 if (elm.addEventListener) {
  elm.addEventListener(evType, fn, useCapture);//DOM2.0
  return true;
 }else if (elm.attachEvent) {
  var r = elm.attachEvent('on' + evType, fn);//IE5+
  return r;
 }else {
  elm['on' + evType] = fn;//DOM 0
 }
}

 

Dean Edwards版:                                                                                                   
功能非常强悍,解决IE的this指向问题,event总是作为第一个参数传入,跨浏览器就更不在话下。

function bind(element, type, handler) {
 //为每一个事件处理函数分派一个唯一的ID
 if (!handler.$$guid) handler.$$guid = addEvent.guid++;
 //为元素的事件类型创建一个哈希表
 if (!element.events) element.events = {};
 //为每一个"元素/事件"对创建一个事件处理程序的哈希表
 var handlers = element.events[type];
 if (!handlers) {
  handlers = element.events[type] = {};
  //存储存在的事件处理函数(如果有)
  if (element["on" + type]) {
   handlers[0] = element["on" + type];
  }
 }
 //将事件处理函数存入哈希表
 handlers[handler.$$guid] = handler;
 //指派一个全局的事件处理函数来做所有的工作
 element["on" + type] = handleEvent;
};
//用来创建唯一的ID的计数器
addEvent.guid = 1;
function removeEvent(element, type, handler) {
 //从哈希表中删除事件处理函数
 if (element.events && element.events[type]) {
  delete element.events[type][handler.$$guid];
 }
};
function handleEvent(event) {
 var returnValue = true;
 //抓获事件对象(IE使用全局事件对象)
 event = event || fixEvent(window.event);
 //取得事件处理函数的哈希表的引用
 var handlers = this.events[event.type];
 //执行每一个处理函数
 for (var i in handlers) {
  this.$$handleEvent = handlers[i];
  if (this.$$handleEvent(event) === false) {
   returnValue = false;
  }
 }
 return returnValue;
};
//为IE的事件对象添加一些“缺失的”函数
function fixEvent(event) {
 //添加标准的W3C方法
 event.preventDefault = fixEvent.preventDefault;
 event.stopPropagation = fixEvent.stopPropagation;
 return event;
};
fixEvent.preventDefault = function() {
 this.returnValue = false;
};
fixEvent.stopPropagation = function() {
 this.cancelBubble = true;
};

 

HTML5版:                                                                                                 

var addEvent=(function(){
 if(document.addEventListener){
  return function(el,type,fn){
   if(el.length){
    for(var i=0;i<el.length;i++){
     addEvent(el[i],type,fn);
    }
   }else{
    el.addEventListener(type,fn,false);
   }
  };
 }else{
  return function(el,type,fn){
   if(el.length){
    for(var i=0;i<el.length;i++){
     addEvent(el[i],type,fn);
    }
   }else{
    el.attachEvent(‘on‘+type,function(){
     return fn.call(el,window.event);
    });
   }
  };
 }
})();

 

分享到:
评论

相关推荐

    JavaScript 事件处理 事件绑定 示例代码

    事件绑定 示例代码JavaScript 事件处理 事件绑定 示例代码JavaScript 事件处理 事件绑定 示例代码JavaScript 事件处理 事件绑定 示例代码JavaScript 事件处理 事件绑定 示例代码JavaScript 事件处理 事件绑定 示例...

    将JavaScript事件绑定到ASP.NET对象

    在ASP.NET框架中,JavaScript事件绑定是将客户端脚本与服务器端控件相结合,以实现动态交互和优化用户体验的关键技术。尽管ASP.NET提供了丰富的服务器端功能,但JavaScript在处理页面上的实时交互和验证等方面具有...

    JavaScript 事件绑定及深入

    JavaScript中的事件绑定是前端开发中一个核心的概念,它涉及让网页元素在特定的操作或触发条件下执行相应的代码。本文将详细介绍事件绑定的方式,包括传统事件绑定和现代事件绑定,以及在事件绑定过程中可能遇到的...

    浅谈JavaScript事件绑定的常用方法及其优缺点分析

    本文将探讨三种常见的JavaScript事件绑定方法:传统方式、W3C标准方式以及Internet Explorer (IE)方式,并分析它们各自的优缺点。 1. **传统方式(DOM0级事件处理程序)** - **优点**: - 简单易用,适用于所有...

    layui动态绑定事件的方法

    综上所述,layui动态绑定事件方法的核心是通过事件委托来处理动态创建的DOM元素,并且要特别注意兼容性问题以及框架组件的实例化。通过上述方法,即使是动态添加到页面上的元素,也能确保事件能够正确地绑定和触发,...

    javascript 处理事件绑定的一些兼容写法

    在JavaScript中,事件绑定是创建交互式网页的关键部分。本文将详细讲解JavaScript处理事件绑定的一些兼容性写法,适用于不同的浏览器环境。 首先,让我们看一个基本的事件绑定函数的实现。这个函数`addEvent`接受三...

    关于JavaScript中事件绑定的方法总结

    在JavaScript代码中,我们可以通过获取DOM元素并设置其事件属性来绑定事件。例如: ```html 点我呦" id="demo"/> document.getElementById("demo").onclick = function testAlert() { alert("hello world!")...

    javascript为DOM绑定事件 兼容

    JavaScript 为 DOM 绑定事件兼容 JavaScript 为 DOM 绑定事件是指在网页中将事件处理程序绑定到 HTML 元素上的过程,而为了实现跨浏览器兼容性,我们需要了解不同的浏览器对绑定事件的实现方式。 直接为 Element ...

    详解javascript事件绑定使用方法

    由于html是从上至下加载的,通常我们如果在head部分引入...attachEvent(事件名称, 函数),绑定事件处理函数 detachEvent(事件名称, 函数),解除绑定 DOM方式 addEventListener(事件名称,函数, 捕获) removeEventListe

    javascript事件绑定学习要点

    在JavaScript中,事件绑定是前端开发中的一项基础技术,它负责指定当特定事件发生时(如用户点击按钮、加载页面等),应该执行哪些代码。在学习JavaScript事件绑定时,主要涉及以下几个重要知识点。 首先,传统事件...

    javascript重复绑定事件造成的后果说明.docx

    ### JavaScript重复绑定事件的后果与解决方案 #### 一、引言 在进行Web前端开发时,事件处理是非常重要的一部分。合理的事件绑定能够提高用户体验,而错误的事件绑定则可能导致各种问题,比如性能下降、功能异常等...

    JavaScript给按钮绑定点击事件(onclick)的方法

    本文实例讲述了JavaScript给按钮绑定点击事件(onclick)的方法。分享给大家供大家参考。具体分析如下: 我们可以通过设定按钮的onclick属性来给按钮绑定onclick事件 <!DOCTYPE html> <html> <head>...

    JavaScript 动态网页实例 - 事件绑定与事件触发.rar

    在 Web页面中,浏览器可以调用JavaScript 响应用户的操作。例如,当用户单击了某个链接,或者编辑了表单域中的内容,浏览器就...本章介绍基本的事件绑定与事件触发,主要包括事件绑定的常见方式与事件编写两部分内容。

    JavaScript 趣味案例-事件处理-dom操作表格 示例代码

    包含表格表单创建、样式设置、事件绑定(表格、表单、复选框)、事件处理JavaScript 事件处理 示例代码 包含表格表单创建、样式设置、事件绑定(表格、表单、复选框)、事件处理JavaScript 事件处理 示例代码 包含...

    JavaScript给每一个li节点绑定点击事件的实现方法

    其次,使用for循环遍历集合中的每一个节点,并为它们分别绑定事件。第三,利用`this`关键字在事件处理函数中引用触发事件的节点。最后,通过闭包(IIFE)解决循环中变量共享问题,实现为每个节点绑定带有不同参数的...

    第三章 JavaScript事件

    事件处理程序通过指派(绑定)的方式分为两种:传统事件处理程序指派方式和现代事件处理程序指派方式。 传统事件处理程序 传统事件处理程序指派方式,可以为一个事件指派一个事件处理程序,现在所有浏览器产品都...

    javascript大事绑定学习要点_.docx

    本文将深入探讨JavaScript中的事件绑定,特别是传统事件绑定的问题,W3C事件处理函数,IE事件处理函数,以及事件对象的其他补充。 首先,我们来看看传统事件绑定的问题。传统的事件绑定通常分为内联事件处理和脚本...

    JavaScript绑定大事监听函数的通用方法_.docx

    W3C 绑定方法是使用 addEventListener() 函数来绑定事件监听函数,这是一种更加标准化的绑定方法。 在选择绑定方法时,开发者需要考虑多个因素,例如浏览器兼容性、代码质量和开发效率。不同的绑定方法都有其优缺,...

    jquer事件绑定

    本文将详细介绍如何使用jQuery进行事件绑定,特别是通过`bind()`方法来实现自定义命名空间事件绑定的具体应用场景及其实现方式。 #### 一、jQuery事件绑定概述 jQuery提供了多种方式来处理DOM元素上的事件绑定,...

Global site tag (gtag.js) - Google Analytics