本文解析JavaScript中DOM0级与DOM2级事件绑定的核心差异。DOM0级通过属性赋值实现,后绑定的事件会覆盖前者;而DOM2级利用addEventListener或jQuery的click方法,支持多个监听器依次执行且互不覆盖。文章通过具体代码示例展示了两者共存时的执行顺序与结果,帮助开发者理解事件处理机制。
DOM0级事件处理机制
DOM0级事件处理
<a href="#" id="hash" onclick="fn();fn();">
<button type="button">返回上面进行开通</button>
</a>
var btn=$('#hash').get();
btn.onclick=function(){
alert('');
};
btn.onclick=function(){
alert('');
};
将onclick直接写入HTML标签内部属于典型的DOM0级事件绑定方式,此时fn和fn1会按顺序依次执行。另一种常见做法是通过JavaScript获取元素后,直接为元素的onclick属性赋值,这也属于DOM0级绑定。需要注意的是,如果多次对同一元素的onclick进行赋值,后一次绑定的函数会完全覆盖前一次,包括之前通过HTML行内方式绑定的onclick,最终只会执行最后赋值的那个函数(例如弹出“222”)。
DOM2级事件处理机制
DOM2级事件处理
$('#hash').click(function(){
alert('jq的dom2级点击第一次')
});
$('#hash').click(function(){
alert('jq的dom2级点击第二次')
});
btn.addEventListener('click',function(){
alert('原生dom2级第一次click')
},false);
btn.addEventListener('click',function(){
alert('原生dom2级第二次click')
},false)
上述提到的通过jQuery绑定click或使用原生JavaScript的addEventListener进行绑定,均属于DOM2级事件绑定范畴。前两种情况通常涉及jQuery的绑定方式,后几种则是原生JavaScript的实现方式。与DOM0级不同,DOM2级绑定的多个事件监听器不会相互覆盖,而是会按照绑定顺序依次执行,包括jQuery绑定的方法和原生JavaScript绑定的方法。这正是DOM2级事件与DOM0级事件的主要区别所在。
DOM0与DOM2事件的共存机制
DOM0与DOM2事件的共存机制
<a href="#" id="hash" onclick="fn();fn1();">
<button type="button">返回上面进行开通</button>
</a>
<script type="text/javascript">
function fn(){
alert('ade');
}
function fn1(){
alert('ade111');
}
var btn=$('#hash').get(0);
btn.onclick=function(){
alert('111');
};
$('#hash').click(function(){
alert('jq的dom2级点击第一次')
});
btn.addEventListener('click',function(){
alert('原生dom2级第一次click')
},false);
</script>
上述示例包含两个 dom0 级事件和两个 dom3 级事件绑定。JavaScript 中编写的 dom0 级事件会覆盖行内定义的 fn 和 fn1 方法,但 JavaScript 中的 dom0 级事件可与 dom2 级事件共存。最终执行结果为弹出 '111',随后依次执行 jq 的 dom2 级点击第一次和原生 dom2 级第一次 click。
以上内容是对JavaScript中DOM0级事件和DOM2级事件区别的介绍,希望对大家有所帮助,同时也非常感谢大家对本站网站的支持!