我想弄清楚的DOM如何跟踪事件处理程序,无论是通过使用jQuery的addEventListener约束,或通过HTML属性(如的onload ="myFunc的()").
我已经读过jQuery使用.data()方式来存储jQuery绑定的事件处理程序......但是其他的呢?他们去哪里?我知道Webkit的检查器工具通过检查Elements选项卡中的元素来显示事件监听器,但它在哪里获取该信息?
此外,在使用Chrome的Web检查一些测试,我用控制台通过拉动在用较新的替换上现场直播一个版本的jQuery的<script>标签,从而重写jQuery和$变量.显然,在替换之前使用jQuery绑定的事件丢失了,因为在该过程中引入了新的.data()接口.
然而,那些"丢失"的处理程序仍然受某些事件的约束,因为它们实际上最终在事件触发时被调用.假设我想完全删除它们,或者用我自己的处理程序取代它们?这就是为什么我想知道如何在DOM保存它们的地方访问实际的处理程序......并且没有jQuery.
我从一个空页开始.如果我跑,document.body.onclick我得到null.如果我应用以下代码:
document.body.onclick = function() { return "Click"; };
Run Code Online (Sandbox Code Playgroud)
我得到的function() { return "Click"; },当我运行document.body.onclick.那讲得通!但是当我跑步的时候
document.body.addEventListener("click", function() { return "Click"; });
Run Code Online (Sandbox Code Playgroud)
document.body.onclick仍然null,但输出是"Click"我跑的时候document.body.click().
所以我的问题是,使用时存储的功能在addEventListener哪里?
我无法理解为防止 JavaScript 中的默认操作而传递的参数“e”:
document.getElementById('submit').addEventListener('click', calculate, false);
function calculate(e){
e.preventDefault():
}
Run Code Online (Sandbox Code Playgroud) 我已经使用它已经有一段时间但我仍然不知道 - e将它传递给onChange或者你可以访问的对象是什么onSubmit?