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

时间:2011-05-09 18:34:12

标签: javascript jquery javascript-events cross-browser

请阅读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代码是什么?

1 个答案:

答案 0 :(得分:3)

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

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

someFunction.call(element); // alerts "testy"

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