1

現在作業中のサイトでスムーズ スクロール スクリプトを使用していますが、同じスクリプトで以前に経験した非常に厄介な問題があります。それはうまくスムーズに動作しますが、ナビゲーションポイントの1つをクリックすると、ターゲットにしようとしているdiv(またはa)につながるはずです.0.1秒ほどターゲット領域が表示され、スクロールが開始されます. 毎回というわけではありませんが、煩わしいほど頻繁に発生します。どうすればこれを防ぐことができますか? これが私が話しているスクリプトです:

$(window).load(function(){
                $(".contactLink").click(function(){
                    if ($("#contactForm").is(":hidden")){
                        $("#contactForm").slideDown("slow");
                    }
                    else{
                        $("#contactForm").slideUp("slow");
                    }
                });
            });
            function closeForm(){
                $("#messageSent").show("slow");
                setTimeout('$("#messageSent").hide();$("#contactForm").slideUp("slow")', 2000);
           }

$(window).load(function() {
  function filterPath(string) {
    return string
      .replace(/^\//,'')
      .replace(/(index|default).[a-zA-Z]{3,4}$/,'')
      .replace(/\/$/,'');
  }
  $('a[href*=#]').each(function() {
    if ( filterPath(location.pathname) == filterPath(this.pathname)
    && location.hostname == this.hostname
    && this.hash.replace(/#/,'') ) {
      var $targetId = $(this.hash), $targetAnchor = $('[name=' + this.hash.slice(1) +']');
      var $target = $targetId.length ? $targetId : $targetAnchor.length ? $targetAnchor : true;
       if ($target) {
         var targetOffset = $target.offset().top - 110;
         $(this).click(function() {
           $('html, body').animate({scrollTop: targetOffset}, 1400);
           var d = document.createElement("div");
        d.style.height = "101%";
        d.style.overflow = "hidden";
        document.body.appendChild(d);
        window.scrollTo(0,scrollToM);
        setTimeout(function() {
        d.parentNode.removeChild(d);
            }, 10);
           return false;
         });
      }
    }
  });
});
4

2 に答える 2

1

解決策を見つけました:

 $(this).click(function(e) {
               e.preventDefault();

今ではうまく転がります。

于 2013-11-05T14:27:31.340 に答える
1
setTimeout(function() {
    d.parentNode.removeChild(d);
        }, 10);
       return false;
     });

return false外に移動しますsetTimeOut

于 2013-11-04T18:32:05.983 に答える