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

Cross browser event handling and jquery support

本文关键字:jquery 支持 事件处理 浏览器      更新时间:2023-09-26

刚刚阅读了 ppk 的网站,IE 的注册事件机制并没有将this对象设置为单击的实际元素。相反,它引用全局窗口对象。以下引自他的网站:

但是当您使用 Microsoft 事件时 注册模型 this 关键字 不引用 HTML 元素。 再加上缺乏 当前类似目标的属性在 Microsoft模型中,这意味着如果 是吗

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愚蠢的"this"错误的方式:通过向您传入的侦听器添加包装器,以便您的侦听器实际上是called