【问题标题】:Cross browser event handling and jquery support跨浏览器事件处理和 jquery 支持
【发布时间】:2011-08-21 21:48:44
【问题描述】:

刚刚阅读 ppk 的网站,IE 的事件注册机制不会将 this 对象设置为被点击的实际元素。相反,它指的是全局窗口对象。 below 引用自他的网站:

但是当你使用微软事件时 注册模型 this 关键字 不引用 HTML 元素。 再加上缺乏一个 currentTarget 中的类似属性 微软模型,这意味着如果 你会的

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

你不知道哪个 HTML 元素 当前处理事件。这是 最严重的问题 Microsoft 事件注册模型和 对我来说,有足够的理由永远不要使用 它,即使在 IE/Win 中也不行 应用程序。

jQuery 可以正确处理这个问题!我的意思是,如果我们这样做:

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

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

【问题讨论】:

    标签: javascript jquery cross-browser jquery-events


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 2011-03-30
      • 2013-11-12
      • 2010-12-21
      • 2011-01-07
      • 2011-05-11
      • 2020-02-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多