二话不说上代码:
var Event = {};
//方法一 runtime
Event.addEventListener = function(obj, eventType, listener){
if(typeof window.addEventListener === 'function') {//DOM2接口
el.addEventListener(type, fn, false);
} else if(typeof document.attachEvent === 'function') {//IE
el.attachEvent('on' + type, fn);
} else {//DOM0接口
el['on' + type] = fn;
}
};
//方法二 initialize
if(typeof window.addEventListener === 'function') {//DOM2接口
Event.addEventListener = function(el, type, fn) {
el.addEventListener(type, fn, false);
};
} else if(typeof document.attachEvent === 'function') {//IE
Event.addEventListener = function(el, type, fn) {
el.attachEvent('on' + type, fn);
};
} else {//DOM0接口
Event.addEventListener = function(el, type, fn) {
el['on' + type] = fn;
};
}
//方法三 lazy mode
Event.addEventListener = function(obj, eventType, listener){
if (!Event.addEventListener)
{
if(typeof window.addEventListener === 'function') {//DOM2接口
Event.addEventListener = function(el, type, fn) {
el.addEventListener(type, fn, false);
};
} else if(typeof document.attachEvent === 'function') {//IE
Event.addEventListener = function(el, type, fn) {
el.attachEvent('on' + type, fn);
};
} else {//DOM0接口
Event.addEventListener = function(el, type, fn) {
el['on' + type] = fn;
};
}
}
Event.addEventListener(obj, eventType, listener);
}
第一种方法,不足之处在于只要用到这个函数就需要对DOM判断一遍,开始判断一遍是不是更好呢?
第二个方法,则是初始化的,判断了一次DOM,然后也使得Event.addEventListener指向了正确的方法,缺点就是不管用不用到这个函数,都被初始化了
这第三个方法正好补足了这点,所以被称做lazy mode,在不使用这个函数的情况下,就不会被初始化,也就减少了初始化的判断
分享到:
相关推荐
本文将详细介绍在jQuery中绑定`click`事件的三种常见方法,以及它们的应用场景和差异。 ### 1. `click()`方法 这是最直接和最简单的绑定`click`事件的方式。当你希望为一个元素添加点击事件监听器时,可以使用`...
综上所述,layui动态绑定事件方法的核心是通过事件委托来处理动态创建的DOM元素,并且要特别注意兼容性问题以及框架组件的实例化。通过上述方法,即使是动态添加到页面上的元素,也能确保事件能够正确地绑定和触发,...
在JavaScript中,DOM事件处理程序的封装是跨浏览器兼容性的一个关键步骤,因为不同的浏览器对事件处理有不同的实现。本文主要讨论了在将DOM事件处理程序封装到名为`event.js`的文件时可能出现的低级错误,并提供了...
总的来说,JavaScript层的属性事件写法是前端开发者必备的技能,它涵盖了DOM操作、事件绑定、事件处理等多个方面。理解并熟练运用这些知识,能帮助开发者创建出交互性更强的网页应用。在实际开发中,还需要结合其他...
事件委托是一种优化技巧,它利用了事件冒泡机制的特点,将事件处理函数绑定到父元素上,而不是直接绑定到每个子元素上。 ```javascript var o = document.querySelector('div'); // 动态添加按钮 document....
jQuery提供了多种方式来处理DOM元素上的事件绑定,其中`bind()`方法是较为基础且灵活的一种。`bind()`方法允许开发者为指定的DOM元素绑定一个或多个事件处理器,并且支持事件委托和自定义命名空间事件绑定等功能。 ...
在提供的内容中,展示了三种不同的事件绑定方式,分别使用jQuery库的不同方法来实现。这里我们将详细探讨这些方法以及它们背后的事件绑定机制。 1. **jQuery的`.onclick()`方法** 这种方式是jQuery对原生...
DOM0级事件处理是JavaScript原生提供的事件处理方式。通过为元素的特定事件属性赋值为一个函数引用来添加事件监听器。 ```javascript var btn = document.getElementById('btn'); btn.onclick = function() { ...
通过示例代码,可以观察到如何通过为按钮元素的`onclick`事件绑定`jia`和`jian`函数来实现点击加减按钮后,页面上某个数字标签的数值相应增加或减少。其中,`jia`函数通过`nextElementSibling`获取按钮后面的数字...
JavaScript 优化 JavaScript 作为一种...通过选择器优化、方法链式调用、事件绑定和解除绑定、浏览器类型判断、数组和对象操作、字符串操作、元素操作、toggleClass 和事件处理等方法,可以提高 JavaScript 的性能。
本文主要介绍了JavaScript中添加和绑定事件的方法,分为通用方法和常用方式两个部分,以确保读者能够掌握在不同浏览器中添加事件监听的技术。 首先,介绍了添加事件的通用方法,即使用`addEventListener`和`...
第三种写法涉及到将JavaScript代码完全从HTML标记中分离出来,通过操作DOM来绑定事件处理器。示例如下: ```html 按钮3" id="btn3"> ``` ```javascript var obj = document.getElementById("btn3"); if(window....
JavaScript是Web开发中不可或缺的一部分,它是一种轻量级的、解释型的编程语言,主要用于增强网页的交互性。这份“JavaScript手册—中文文档”提供了一个全面的JavaScript学习资源,涵盖了从基础语法到高级特性的...
事件处理可以通过`addEventListener`和`removeEventListener`方法进行绑定和解绑。 4. **AJAX** Asynchronous JavaScript and XML(AJAX)允许异步数据交换,实现页面无需刷新即可更新内容。通过创建`...
JavaScript 插件是一种可复用的代码模块,它扩展了JavaScript的功能,使开发者能够便捷地在项目中添加特定功能。创建一个JavaScript插件通常涉及以下几个关键步骤和知识点: 1. **封装**: 封装是JavaScript插件的...
- 事件处理:JavaScript可以监听和响应用户交互,通过addEventListener和removeEventListener来绑定和解绑事件。 - DOM操作:通过DOM API可以查找、添加、删除和修改HTML元素,实现页面动态更新。 6. **异步编程*...
jQuery提供了一种优雅的方式来绑定和处理这些事件。本文将详细介绍如何使用jQuery进行简单事件的绑定,并通过实例来展示如何操作事件响应。 首先,要了解如何在jQuery中绑定事件,最常见的方法是使用`.bind()`方法...
在现代网页开发中,JavaScript 页面自动加载事件是确保页面内容正确加载并且能够及时与用户交互的重要手段。这些事件能够在页面加载的不同阶段触发相应的JavaScript函数,从而执行必要的操作。 首先,我们要了解的...
4. 事件处理:JavaScript可以监听并响应用户的点击、滚动、输入等行为,通过addEventListener或attachEvent来绑定事件处理器。 四、AJAX与异步编程 1. AJAX(Asynchronous JavaScript and XML)允许在不刷新整个...
这里,`selector`是匹配元素的CSS选择器,`eventType`是要绑定的事件类型,`function`是事件触发时执行的回调函数,`data`是可选参数,可以传递给事件处理程序的数据,而`handler`是1.4版本后引入的另一种写法,允许...