为什么preventDefault不能为jQuery工作?

时间:2010-10-18 16:34:16

标签: jquery events event-handling

我似乎无法使用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

1 个答案:

答案 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一段时间,导致页面向上滚动,因为页面总体上更短。