我似乎无法使用preventDefault()来处理以下代码...浏览器仍然希望在单击后跳转到页面顶部。关于如何解决这个问题的任何想法?
$('#controls a').click(function(event){
event.preventDefault();
var r = $(this).attr('rel');
var c = $('#container').attr('class');
// Prevent redundant actions
if (r != c) {
// Toggle 'active' class to show selection
$('#controls a').removeClass('active');
$(this).addClass('active');
// Fade out function then callback to change the view mode
$('#container').fadeOut(100, function(){
$('#container').removeAttr('class');
$('#container').addClass(r);
// Fade the container back in
$('#container').fadeIn(100);
});
}
}); //end list view
答案 0 :(得分:2)
问题(可能是,这部分是一个猜测)不是preventDefault()
,但是你的页面总体高度内容较少(确切地说是13毫秒) ,更改动画,使其淡出,但不会获得帧的display: none;
,如下所示:
$('#container').animate({ opacity: 0 }, 100, function(){
$('#container').removeAttr('class');
$('#container').addClass(r);
// Fade the container back in
$('#container').animate({ opacity: 1 }, 100);
});
这样,您的#container
高度为0
一段时间,导致页面向上滚动,因为页面总体上更短。