0

現在、div ID にジャンプするスキップ リンクがあり、要素にジャンプするときに e.preventDefault() を使用して URL が変更されないようにしていましたが、IE7 と IE8 では e.preventDefault() を使用してもまったく機能しません。アンカータグに参照が含まれているdivへのURLの変更を取り出します。これを修正または回避する方法はありますか?

ここにコードがあります

$('body').delegate('a.skiplink-accessible-text', 'click', function (e) {
    //e.preventDefault();
    if (!$.browser.msie) {
        e.preventDefault();
    }
    var jumpTo = $(this).attr('href');
    $('body').find(jumpTo).attr('tabindex', - 1).focus();

});

編集: テスト目的の jsbin の例を少し示します http://jsbin.com/welcome/20846/edit

4

3 に答える 3

1

を使用すると、IE 8 の jsbin でエラーが発生しましたdelegate。に切り替えましたがOn、現在は機能しているようです。Delegate は IE 8 でスクリプト エラーをスローしていましたが、これは jquery のバグである可能性があります。

$(document).ready(function(){
  $('a').on('click', function(e){
    e.preventDefault();
    var jumpTo = $(this).attr('href');
    $(jumpTo).attr('tabindex', '-1').focus();
  });
});

http://jsbin.com/epabac/6/edit

編集:デリゲートを正しく使用していなかったため、デリゲートはエラーをスローしていました。 OnJquery 1.7以降では、依然として推奨される方法です。デリゲートの正しい使い方は次のとおりです。

$('body').delegate('a', 'click', function(e){ // ...  
});
于 2012-09-07T21:05:29.520 に答える
1

イベント オブジェクトが jquery イベント オブジェクトの場合、e.preventDefault() は IE で機能します。デフォルトを防止するための jquery の下線付きコードは、このコード スニペット (jQuery から取得) に見られるように、機能検出を使用してこれを処理します。

preventDefault: function() {
    this.isDefaultPrevented = returnTrue;

    var e = this.originalEvent;
    if ( !e ) {
        return;
    }

    // if preventDefault exists run it on the original event
    if ( e.preventDefault ) {
        e.preventDefault();

    // otherwise set the returnValue property of the original event to false (IE)
    } else {
        e.returnValue = false;
    }
},
于 2012-09-07T20:42:00.140 に答える
0

IEでお試しくださいe.returnValue = false;

$('body').delegate('a.skiplink-accessible-text', 'click', function (e) {

    if (!$.browser.msie) {
        e.preventDefault();
    } else {
        e.returnValue = false;
    }

    var jumpTo = $(this).attr('href');
    $('body').find(jumpTo).attr('tabindex', - 1).focus();

});
于 2012-09-07T20:31:04.937 に答える