DOM0级分为两个:
一是写在标签内的onclick事件;
<button id="btn" onclick="alert('happy')">按钮</button>
二是在JS写的onclick = function() {}函数
document.getElementById("btn").onclick = function() { alert('thanks') };

DOM2级只有一个:
监听方法,原生方法addEventListener()用于添加事件处理程序(可以添加多个事件处理程序,触发时按照添加顺序依次调用);
removeEventListener()用于移除事件处理程序。
document.getElementById("btn").addEventListener("click", function(){alert("come on")} , false);
两个方法都有三个参数:
event:表示事件名,如click;
function: 事件处理程序函数;
useCapture: true表示捕获阶段调用,false表示在冒泡阶段调用。

DOM2级包含3个事件:事件捕获阶段、处于目标阶段、事件冒泡阶段
<div><a></a></div>,点击a
捕获阶段传播: document ——> div ——> a,然后发生在a。
冒泡阶段传播: a ——> div ——> document

区别:
如果定义两个DOM0级事件,会出现覆盖,DOM2不覆盖,会依次执行。DOM0和DOM2可以共存,不互覆盖。
<a href="#" id="hash" onclick="fn();fn1()">
<button>返回上面进行开通</button>
</a> <!-- 以下四个script的结果是分开执行所得 --> <!-- 内嵌DOM0:把onclick写在标签内,都是DOM0级事件,fn和fn1依次执行。 -->
<script>
var btn = $("#hash").get(0);
function fn() {
console.log('ade');
}
function fn1() {
console.log('ade111');
}
// ade
// ade111
</script> <!--绑定onclick事件作为DOM0级,会覆盖行内onclick,也会覆盖前面的绑定事件-->
<script>
var btn = $("#hash").get(0); btn.onclick = function () {
console.log("111");
}
btn.onclick = function () {
console.log("222");
}
function fn() {
console.log('ade');
}
function fn1() {
console.log('ade111');
}
// 222
</script> <!--DOM2-->
<script>
var btn = $("#hash").get(0);
$("#hash").click(function() {
console.log("JQ的DOM2级点击第一次");
}); $("#hash").click(function() {
console.log("JQ的DOM2级点击第二次");
}); btn.addEventListener("click", function () {
console.log("原生DOM2级点击第一次");
}, false); btn.addEventListener("click", function () {
console.log("原生DOM2级点击第二次");
}, false); // JQ的DOM2级点击第一次
// JQ的DOM2级点击第二次
// 原生DOM2级点击第一次
// 原生DOM2级点击第二次
</script> <!--DOM0和DOM2-->
<script>
// 作为DOM0级被调用
function fn() {
console.log('ade');
} // 作为DOM0级被调用
function fn1() {
console.log('ade111');
} // 作为DOM0级
var btn = $("#hash").get(0);
btn.onclick = function() {
console.log('111');
} // DOM0
$('#hash').click(function() {
console.log('JQ的DOM2级点击第一次');
}); // DOM2
btn.addEventListener('click', function () {
console.log('原生DOM2级第一次click')
}, false); // 111 (fn()、fn1()被覆盖)
// jq的DOM2级点击第一次
// 原生DOM2级第一次click
</script>

 

最新文章

  1. .net比较完美的动态注册com组件
  2. ubuntu14.04禁用guest用户登录
  3. RadioButtonList单选和RequiredFieldValidator验证是否选中
  4. 从Wordpress迁移到Jekyll
  5. C之文件读写
  6. jquery 操作 checkbox
  7. Android上成功实现了蓝牙的一些Profile
  8. Scrapy 通过登录的方式爬取豆瓣影评数据
  9. Android 手机应用开发经验 之 通过Socket(TCP/IP)与PC通讯
  10. 基础--Redis在Linux环境下的安装
  11. vue 的模板编译—ast(抽象语法树) 详解与实现
  12. 自己写一个网页版的Markdown实时编辑器
  13. redis总结(一)的持久化的取舍和选择以及作用
  14. JavaEE-Servlet的部署和配置
  15. 1. Two Sum&amp;&amp;15. 3Sum&amp;&amp;18. 4Sum
  16. JS学习笔记7_表单脚本
  17. GoLang学习控制语句之switch
  18. Q673 最长递增子序列的个数
  19. js中的正则表达式的运用
  20. 软工实践团队展示——WorldElite

热门文章

  1. 为什么需要域驱动设计(DDD)?
  2. springboot-数据访问之jdbc
  3. Jpa设置默认值约束
  4. Linux编译安装软件常见问题及排查
  5. word中怎么加入endnote的插件
  6. java中"Static块"是怎么回事,怎么用的,有什么意义
  7. oracle数据库存储过程中的select语句的位置
  8. 带UI的小初高数学学习软件—艰难地用C++(QT库)实现的过程
  9. npm使用淘宝镜像源
  10. HTTP长连接和短连接及应用情景