0

フォームのクリックを防ぐスクリプトを書いていますが、IE7 - 8 で動作させることができません。

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]);
4

1 に答える 1

2

jQuery を使用しているため、ブラウザーに関係なく、イベント オブジェクトがコールバックに渡されます。「純粋な」イベント オブジェクトを受け取るわけではないことに注意することが重要ですが、それは jQuery オブジェクトにラップされています。真のイベント オブジェクトを取得するには、次のようにします。

var trueEvent = e.originalEvent;

stopPropagationこれで問題は解決するはずです。IE8 には jQuery メソッド.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リファレンスも見ましたこれはjQueryイベントオブジェクトでそれが言うことです

于 2012-12-03T12:11:58.973 に答える