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
为引用您传入的事件.props
object参数提供的任意属性集.你得到的基本上是一个新的对象,有一些额外的属性和对原始事件的引用 - 除了之外没有规范化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 次 |
最近记录: |