跨浏览器事件处理和 jquery 支持
Cross browser event handling and jquery support
刚刚阅读了 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
。
相关文章:
- jQuery-2.1.1.min.js或最新版本jQuery-2.13.min.js不会't支持'@
- jQuery检测浏览器是否支持Zoom
- JQuery示例不起作用-“;对象没有't支持属性或方法'按钮'&”;
- IE中不支持JQuery window.location.hash
- jQuery Deferred and promise-错误:对象没有't支持属性或方法'然后'
- 在粘贴到文本字段Jquery时检查并突出显示不支持的特殊字符
- 确保Javascript支持多个库(例如Angular 1.5,jQuery 2.2.0,ckEditor 4.x,pd
- 拖放下载,支持IE Javascript/Jquery/Html5
- 一系列下拉菜单,由jQuery提供支持,隐藏和显示,但不在Chrome中
- jquery支持多个项目
- jquery复选框树是否支持“;展开直到节点“;或“;扩展父母”;当程序地调用“;检查”;
- jQuery支持CSS4选择器吗
- 添加客户端jQuery支持
- jQuery:支持几乎所有格式的音频播放器
- jQuery支持ftp请求吗
- 在没有 jQuery 支持的情况下更新 javascript 中的本地存储值
- 最好的IDE HTML5, Javascript, CSS, Jquery支持与GUI构建工具
- Jquery支持静态HTML,但不支持动态HTML
- 设置单选元素文本与jQuery支持IE
- 跨浏览器事件处理和 jquery 支持