js操作DOM动态添加和移除事件

非IE下,注意事件名不带on,如onclick为click

添加事件:DOM对象.addEventListener(‘事件名‘,函数名,true/false);

删除事件:DOM对象.removeEventListener(‘事件名‘,函数名,true/false);

第三个参数是useCapture,如果为true,浏览器采用capture截获处理事件顺序;如果为false,浏览器采用bubbing冒泡方式处理事件顺序

一般为false

给个例子,可以自己修改true或false来看效果:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
        "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
    <title></title>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
</head>
<body>
<div id="div_test">div_test
    <input type="button" id="btn_test" value="btn_test"/>
</div>
<script type="text/javascript">
    window.onload = function () {
        document.getElementById("div_test").addEventListener("click", test1, false);
        document.getElementById("btn_test").addEventListener("click", test2, false);
    }
    function test1() {
        alert("外层div触发")
    }
    function test2() {
        alert("内层input触发")
    }
</script>
</body>
</html>

例子

IE下,事件名不能去on了,正常写

添加事件:DOM对象.attachEvent(‘事件名‘,函数名);

删除事件:DOM对象.detachEvent(‘事件名‘,函数名);

注意,绑定事件和删除事件的函数名必须一致,而且不能使用匿名函数,匿名函数不能指定函数名

常用代码如下:

//绑定事件
if (typeof document.addEventListener != "undefined") {
document.addEventListener("mousedown",_lhlclick,true);
} else {
document.attachEvent("onmousedown",_lhlclick);
} 

//解除绑定事件
if (typeof document.addEventListener != "undefined") {
document.removeEventListener("mousedown",_lhlclick,true);
} else {
document.detachEvent("onmousedown",_lhlclick);
} 

绑定和解除事件

时间: 2024-10-13 16:20:08

js操作DOM动态添加和移除事件的相关文章

JS对select动态添加options操作[IE&amp;FireFox兼容]

<select id="ddlResourceType" onchange="getvalue(this)"> </select> 动态删除select中的所有options: document.getElementById("ddlResourceType").options.length=0; 动态删除select中的某一项option: document.getElementById("ddlResourc

js对select动态添加和删除OPTION

<select id="ddlResourceType" onchange="getvalue(this)"> </select> 动态删除select中的所有options: document.getElementById("ddlResourceType").options.length=0; 动态删除select中的某一项option: document.getElementById("ddlResourc

原生js操作DOM基础-笔记

原文参考http://mp.weixin.qq.com/s?__biz=MzU3MDA0NTMzMA==&mid=2247485490&idx=1&sn=15197b4b53e0669e4a017e54a31fb39c&source=41#wechat_redirect 使用原生js为了提高效率,纯js操作dom一 查询DOMdocument.querySelector()参数是任意css选择器格式,只会返回第一个匹配到值document.querySelectorAll(

Js操作DOM的方式及获取浏览器的宽高

我们在为页面加入一些动态效果或实现一些脚本功能时,需要对文档body中的元素进行操作,也就是,我们需要使用js或jQuery来对dom操作.下面呢,我说一下js是怎样对dom操作的. document.write(),这既可以向文档输出文本,也可以写入代码来添加元素. 获取需要操作的元素: 利用id获取就是:document.getElementById("name"); 利用class获取就是:document.getElementsByClassName("name&qu

JS 操作Dom节点之样式

为了提高用户体验,我们经常会动态修改Dom节点的样式,各种浏览器差异比较大,我们如何应对?不断尝试,不断总结~! 1. style.getComputedStyle.currentStyle 内嵌样式: <!--body --><div style="width: 30px;background-color: #ff6a00;">我就是傻里傻气的,完全素颜!</div> 1 //内联样式优先级最高,通过style获取的样式是最准确的 2 var el

DOM怎样添加、移除、移动、复制、创建和查找节点

DOM怎样添加.移除.移动.复制.创建和查找节点// 创建新节点 createDocumentFragment() //创建一个DOM片段 createElement() //创建一个具体的元素 createTextNode() //创建一个文本节点 // 添加.移除.替换.插入 appendChild() removeChild() replaceChild() insertBefore() //在已有的子节点前插入一个新的子节点 // 查找 getElementsByTagName() //

为什么说js操作DOM很慢

为什么说js操作DOM会影响性能呢? 在浏览器中DOM得实现和ECMAScript是分离得. 在IE中EMCMAScript是实现在jscript.dll中,DOM实现在mshtml.dll中.在Chrome中使用Webkit中的WebCore处理DOM和渲染,ECMAScript是在V8引擎中实现的.其他浏览器也类似. 因此在使用js操作DOM的时候是通过js代码调用DOM的接口,这就相当于两个互相独立的模块发生交互,这样的性能损耗是非常高的. 然后影响DOM操作性能的主要原因是它会导致浏览器

WEB前端技巧之JQuery为动态添加的元素绑定事件

jquery 为动态添加的元素绑定事件 如果直接写click函数的话,只能把事件绑定在已经存在的元素上,不能绑定在动态添加的元素上 可以用delegate来实现 .delegate( selector, eventType, handler ) 例如示例: $('someUlSelector').delegate('someLiSelector','click',function(){ //codes... //$(this) for the current jquery instance of

jQuery给动态添加的元素绑定事件的方法

jquery中绑定事件一般使用bind,或者click,但是这只能是对已经加载好的元素定义事件,那些后来添加插入的元素则需要另行绑定.在1.7版本以前使用live.但是在1.8版本以后推荐使用on.这里介绍jQuery中如何给动态添加的元素绑定事件在实际开发中会遇到要给动态生成的html元素绑定触发事件的情况 例如 1 <div id="testdiv"> 2 <ul></ul> 3 </div> 需要给<ul>里面动态添加的