我目前已跳过跳转到div ID的链接,并且正在使用e.preventDefault()来阻止url在跳转到元素时更改但在IE7和IE8中它根本不能使用e.preventDefault( )如果我把它取出来,则url更改为div,锚标记包含对它的引用。他们是否有任何解决方法或方法?
这是代码
$('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
答案 0 :(得分:1)
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;
}
},
答案 1 :(得分:1)
使用delegate
时,我在IE 8中的jsbin中遇到错误。我将其切换到On
,现在似乎正在运作。委托在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
编辑:由于您错误地使用了委托,因此委托正在抛出错误。 On
仍然是Jquery 1.7+的首选方式。 delgate的正确用法将是:
$('body').delegate('a', 'click', function(e){ // ...
});
答案 2 :(得分: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();
});