Ell*_* B. 24 javascript jquery internet-explorer
我通过本机浏览器onclick属性为元素分配一个事件处理函数:
document.getElementById('elmtid').onclick = function(event) { anotherFunction(event) };
Run Code Online (Sandbox Code Playgroud)
当我进入时anotherFunction(event),我希望能够像使用jQuery中通过该.on()方法获得的事件对象一样使用事件对象.我想这样做是因为jQuery事件对象具有诸如的属性和方法.pageX,.pageY并且.stopPropagation()可以在所有浏览器中使用.
所以我的问题是,在我将本机浏览器事件对象传入之后anotherFunction(),如何将其转换为jQuery事件?我试过了$(event),但没办法.
这里最明显的问题是:你为什么不只是使用jQuery .on,.bind,.click等来分配你的事件处理函数?答案:我正在构建一个页面,其中有一个巨大的表格,上面有很多可点击的东西.不幸的是,这个项目要求页面必须在IE6和IE7中快速渲染..on在IE6和IE7中使用et等会很快造成DOM泄漏并耗尽内存(使用Drip测试自己:http://outofhanwell.com/ieleak/index.php? title = Main_Page).设置onclick行为.onclick是我必须在IE6和IE7中快速渲染的唯一选项.
Jim*_*iTh 15
评论太长了...因为文档对此有点模糊......(我在下面看1.7.1)
jQuery.Event(event, props):
type属性设置为事件的type属性.isDefaultPrevented通过标准化调用所有的方法来检查,如果是防止违约.originalEvent为引用您传入的事件.propsobject参数提供的任意属性集.你得到的基本上是一个新的对象,有一些额外的属性和对原始事件的引用 - 除了之外没有规范化isDefaultPrevented.
jQuery.event.fix(event):
jQuery.Event())并规范化此处提到的属性.ETA:
实际上,仔细查看代码,jQuery.event.fix()应该按照@ Beetroot-Beetroot描述的方式工作.这就是jQuery在事件调度中创建jQuery事件对象的全部功能.
Dom*_*nic 10
你想要的jQuery.event.fix.
new jQuery.Event(nativeEvent)注意此时事件没有任何"eventy"性质,只是originalEvent,timeStamp和冒泡/默认的预防功能.
jQuery.event.fix(nativeEvent)nativeEvent,以及修复钩子中的特定属性target与metaKey属性的跨浏览器问题试试这个:
document.getElementById('elmtid').onclick = anotherFunction;
Run Code Online (Sandbox Code Playgroud)
有:
function anotherFunction(evt){
evt = $.event.fix(evt || window.event);//Note need for cross-browser reference to the native event
...
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9378 次 |
| 最近记录: |