跨浏览器事件处理和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
你的监听器。