document.getElementById('elmtid').onclick = function(event) { anotherFunction(event) };当我在anotherFunction(event)中时,我希望能够像使用通过.on()方法在jQuery中获得的事件对象一样使用事件对象。我之所以这样做,是因为jQuery事件对象具有可在所有浏览器上使用的属性和方法,如.pageX、.pageY和.stopPropagation()。
因此,我的问题是,在我将本机浏览器事件对象传入anotherFunction()之后,如何将其转换为jQuery事件?我试过$(event),但它不起作用。
这里最明显的问题是:为什么不直接使用jQuery .on、.bind、.click等来分配事件处理函数呢?答案是:我正在构建一个页面,它有一个巨大的表格,上面有很多可点击的东西。不幸的是,这个项目要求页面必须在IE6和IE7中快速呈现。在IE6和IE7中使用.on等人很快就会造成DOM泄漏并消耗内存(使用Drip:http://outofhanwell.com/ieleak/index.php?title=Main_Page自己测试一下)。通过.onclick设置onclick行为是我必须在IE6和IE7中快速渲染的唯一选项。
发布于 2012-03-01 08:15:42
因为文档在这方面有点含糊...(我在下面的1.7.1中查看)
jQuery.Event(event, props)
type属性设置为事件的type属性。isDefaultPrevented,以引用您传入的事件。H114添加由对象argument.你得到的基本上是一个新的对象,带有一些额外的属性和对原始事件的引用-除了isDefaultPrevented之外没有其他的规范化。
jQuery.event.fix(event)
jQuery.Event())的对象,并规范化提到的here.属性
预计到达时间:
实际上,仔细观察代码,jQuery.event.fix()应该可以工作--按照@Beetroot-Beetroot描述的方式。jQuery所做全部工作就是在事件分派器中创建jQuery事件对象。
发布于 2012-03-01 08:05:20
你想要jQuery.event.fix。
new jQuery.Event(nativeEvent)
nativeEvent as the originalEvent property.注意:在这一点上,事件没有任何“事件”属性,只有originalEvent、timeStamp和冒泡/防止默认的函数。
jQuery.event.fix(nativeEvent)
nativeEvent, plus specific ones from the fix hooktarget and metaKey properties发布于 2012-03-01 08:13:46
试试这个:
document.getElementById('elmtid').onclick = anotherFunction;通过以下方式:
function anotherFunction(evt){
evt = $.event.fix(evt || window.event);//Note need for cross-browser reference to the native event
...
}https://stackoverflow.com/questions/9508377
复制相似问题