Почему предотвращение дефолта не работает для jQuery? - PullRequest
1 голос
/ 18 октября 2010

Кажется, я не могу заставить warnDefault () работать со следующим кодом ... Браузер все еще хочет перейти в верхнюю часть страницы после щелчка.Есть идеи как это исправить?

$('#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 Ответ

2 голосов
/ 18 октября 2010

Проблема ( вероятно , это отчасти предположение) не 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 на мгновение, вызывая прокрутку страницырезервное копирование просто потому, что страница стала короче в целом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...