2016-09-06 4 views
3

ユーザーがリスト内のリンクをクリックすると、ブラウザがちらつくのはなぜですか?これは、ユーザーが同じ「リンク」を2回クリックしたときにはっきりしているようです。私にこれを起こさないようにする方法はありますか?htmlスクロールするためのスクロールページ

また、上にスクロールするリンクをクリックする代わりにクリックすると表示されます。これをテストするには、リスト項目「テスト」をクリックして、ここで

https://jsfiddle.net/JokerMartini/9vne9423/は、すべての作業を行っている主なJSビットは「なぜ」...

JSをクリックしてくださいあなたのカスタム関数を呼び出す前に、アンカータグのprevent the default behaviorべき

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

ality:

$(".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)'はCSP対応HTTPSページの[Content Security Policy](https://developer.mozilla.org/ja/docs/Security/CSP)に違反しています。 反対に、 'href =" javascript:void(0) "'を使うといくつかの利点があります。このアプローチの最良の説明は、[ここ](http://stackoverflow.com/a/138233/2584305)で見つけることができます。 – kalym4ik

関連する問題