请阅读ppk的网站,IE注册事件的机制没有将this
对象设置为被点击的实际元素。相反,它引用全局窗口对象。 below引自他的网站:
但是当您使用Microsoft事件时 注册模型这个关键字 不引用HTML元素。 再加上缺乏了 类似于currentTarget的属性 微软模型,这意味着如果 你做了
element1.attachEvent('onclick',doSomething) element2.attachEvent('onclick',doSomething)
你无法知道哪个HTML元素 目前处理该事件。这是 最严重的问题 Microsoft事件注册模型和 对我来说,这是永远不会使用的理由 它,甚至不在IE / Win中 应用
jQuery正确处理这个问题!我的意思是,如果我们做类似的事情:
$(element).click(function(){...});
this
指的是问题中的元素。 jquery如何处理IE浏览器?它的等效js代码是什么?
答案 0 :(得分:3)
使用call
方法,您可以在任何函数中设置this
的值:
var element = document.getElementById('testy'),
someFunction = function () {
alert(this.id);
};
someFunction.call(element); // alerts "testy"
这就是几乎每个库都修复IE的愚蠢“这个”错误的方法:通过向你传入的侦听器添加一个包装器,使你的监听器实际上是called
。