我正在写一个防止表单点击的脚本,但我不能让它在IE7 - 8中工作,maby有谁知道它为什么?
我尝试使用ev = e || window.event;但没有什么好事发生。 请帮助,并在将来感谢。
(function( button ) {
$( document ).click(function( e ) {
ev = e || event;
var clickedEl = ev.srcElement || ev.target;
var parentClass = $( button ).attr( 'class' ).split(' ')[0];
if ( clickedEl !== button && $( clickedEl ).parents( '.' + parentClass ).
length == 0 && !$( clickedEl ).hasClass( parentClass ) ) {
// DO SOMETHING
}
});
})($('.category_select')[0]);
答案 0 :(得分:2)
因为您正在使用jQuery,所以无论浏览器如何,都会将事件对象传递给回调。虽然重要的是要注意你不会收到“pure”事件对象:它包含在jQuery对象中。要获取 true 事件对象,请执行以下操作:
var trueEvent = e.originalEvent;
这应该可以解决问题,请注意:在IE8中你没有jQuery stopPropagation
方法,你必须使用.returnValue = false
和.cancelBubble = true
手动修正它
(function( button )
{
$( document ).click(function( e )
{
var ev = e.originalEvent,//this is all you need to do, plus ev is a variable, declare it as such,
clickedEl = ev.srcElement || ev.target,//separate var declarations by comma
parentClass = $( button ).attr( 'class' ).split(' ')[0];
if ( clickedEl !== button && $( clickedEl ).parents( '.' + parentClass ).length == 0 && !$( clickedEl ).hasClass( parentClass ) )
{
// DO SOMETHING
}
});
})($('.category_select')[0]);
这应该有效 - 我还看了一下jQuery参考this is what it says on the jQuery event object