跨浏览器事件处理和jquery支持

只需阅读ppk的网站,IE注册事件的机制就不会this对象设置为被点击的实际元素。 相反,它引用全局窗口对象。 以下内容引自他的网站:

但是,当您使用Microsoft事件注册模型时,this关键字不会引用HTML元素。 结合Microsoft模型中缺少类似currentTarget的属性,这意味着如果你这样做了

 element1.attachEvent('onclick',doSomething) element2.attachEvent('onclick',doSomething) 

您无法知道当前处理该事件的HTML元素。 这是Microsoft事件注册模型中最严重的问题,对我而言,它永远不会使用它,即使在IE / Win仅应用程序中也是如此。

jQuery正确处理这个! 我的意思是如果我们做的事情如下:

 $(element).click(function(){...}); 

this指的是问题中的元素。 jquery如何处理IE浏览器? 它的等效js代码是什么?

使用call方法,您可以在任何函数中设置this的值:

 var element = document.getElementById('testy'), someFunction = function () { alert(this.id); }; someFunction.call(element); // alerts "testy" 

这就是几乎每个库修复IE愚蠢的“这个”错误的方法:通过向你传入的侦听器添加一个包装器,以便实际called你的监听器。