2016-09-06 6 views
3

Почему, когда пользователь нажимает на ссылку в списке, это заставляет браузер мерцать? Это кажется очень очевидным, когда пользователь дважды нажимает на одну и ту же ссылку. Есть ли способ устранить это?html прокрутить до мерцания страницы

Это также происходит, если вы нажмете ссылку, которая прокручивается вверх, а не вниз. Чтобы проверить это щелкните элемент списка 'Test', а затем нажмите кнопку 'Почему'

https://jsfiddle.net/JokerMartini/9vne9423/

Вот основные JS биты, которые делают всю работу ...

JS

function scroll_to_element(element) { 
    $('html, body').animate({scrollTop: $(element).offset().top}, 500); 
} 

$(window).ready(function() { 

    $(".nav-title").click(function() { 
     var target = $(this); 

     // get data-filter text 
     var title = target.data('title').toLowerCase(); 

     // collect section titles 
     sections = $(".section-title"); 

     // loop through and scroll to valid section 
     for (i = 0; i < sections.length; i++) { 
      var section = $(sections[i]); 
      var section_title = section.data('title').toLowerCase(); 

      if (section_title === title) { 
       scroll_to_element(section) 
       // console.log(target); 
      } 
     } 
    }); 
}); 

ответ

5

Вы должны prevent the default behavior анкерной теги перед вызовом вашей пользовательской функции Эк:

$(".nav-title").click(function(e) { 
    e.preventDefault(); 
}); 

Updated Fiddle

+1

Спасибо за вашу помощь. Это исправлено! – JokerMartini

1

поставил href="javascript:void(0);" вместо href="#" атрибута в вашем "Что такое", "Почему" и "Test1" связывает

jsfiddle

+0

почему же? Не могли бы вы объяснить причины? – JokerMartini

+0

С одной стороны, 'event.preventDefault()' является лучшим вариантом здесь, потому что он был разработан точно, чтобы предотвратить поведение по умолчанию (например, в этом случае прыгать в верхнюю часть страницы). И 'javascript: void (0)' нарушает [Content Security Policy] (https://developer.mozilla.org/en/docs/Security/CSP) на страницах HTTPS с поддержкой CSP. С другой стороны, использование 'href =" javascript: void (0) "' может иметь некоторые преимущества. Лучшее описание этого подхода вы можете найти здесь (http://stackoverflow.com/a/138233/2584305) – kalym4ik

Смежные вопросы