我通过本机浏览器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中快速渲染的唯一选项.
看看我的jsfiddle 演示,如果e.which == 1那样当你左键单击h2它会
e.which == 2或e.which == 3然后它不会工作.2是鼠标中键,3是鼠标右键.我也发现了这个:
JQuery提供了一个e.which属性,分别为左,中,右三次返回1,2,3.所以你也可以使用if(e.which == 3){alert("right click"); }
此代码无效:
码:
$("h2").live('click', function(e) {
if( e.which == 2 ) {
e.preventDefault();
alert("middle button");
}
});
Run Code Online (Sandbox Code Playgroud)