2016-09-01 13 views
0

実行するには数秒かかるタイピングアニメーションのプラグインがあります。非常にボタンが表示されます。アンカーリンクへスムーズにスクロールし、URLからアンカーを取り除く機能もあります。ドキュメントの準備ができたらスクリプトを入力し、ウィンドウが読み込まれたらスクロール機能をロードします。私が抱えている問題は、入力プラグインのアンカーリンクをクリックするとスクロール機能が起動しないということです。また、入力プラグインの後にスクロール機能を呼び出すことも試みました。私のコードは現在次のようになっています。別のスクリプトが完了した後のjQueryのファイヤー機能

function anchorLinks() { 
    $('a[href*=#]:not([href=#])').click(function() { 
     if (location.pathname.replace(/^\//,'') == this.pathname.replace(/^\//,'') && location.hostname == this.hostname) { 
     var target = $(this.hash); 
     target = target.length ? target : $('[name=' + this.hash.slice(1) +']'); 
     if (target.length) { 
      $('html,body').animate({ 
      scrollTop: target.offset().top -1 
      }, 500); 
      return false; 
     } 
     } 
    }); 
}; 


$(window).load(function(){ 
    anchorLinks(); 
}); 

、その後...

$(document).ready(function(){ 
    $('#msg').typeIt({ 
     speed: 50, 
     breakLines: false, 
     autoStart: false, 
     cursor: false, 
     startDelay: 2000 
    }) 
    .tiType('Hi!') 
    .tiPause(1500) 
    .tiDelete() 
    .tiType('I\'m Sandra Willford, and welcome to TENDesign.') 
    .tiPause(1500) 
    .tiDelete() 
    .tiType('Looking for a designer that has bright ideas for your brand?') 
    .tiPause(1500) 
    .tiDelete() 
    .tiType('Well congratulations, you\'ve landed in the right spot :)') 
    .tiPause(1500) 
    .tiDelete() 
    .tiType('I specialize in fresh and innovative digital, website & branding designs.') 
    .tiPause(1500) 
    .tiDelete() 
    .tiType('Are you ready to take your brand to the next level?') 
    .tiPause(1500) 
    .tiDelete() 
    .tiType('<a href="#start">OMG, Yes I am!...Show me more.</a>'); 
    anchorLinks(); 
}); 

の提案をいただければ幸いです!

+0

だから、あなたが表示するダイアログの最後にレンダリングされたボタンをユーザがクリックした後、ページの上部にスクロールするのですか?また、 'scrollTop()'が何をしていると思いますか、それを行うために必要なことについて説明できますか? – Glubus

+1

まず第一に、これは間違いなく問題を引き起こす可能性があります: 'function scrollTop(){ $ {function(){ $( 'a [href * =#]:not([href =#])')。 (){'$(function(){'と 'と'} 'を削除して、関数内のイベントをbintしないで、代わりに' false false; 'e.preventDefault'を使用してください – vaso123

答えて

1

私はこのようなものが必要だと思います。テストされません:

$(document).on('click', 'a[href*=#]:not([href=#])', function (e) { 
    e.preventDefault(); //<!-- use this instead return false. 
    //Return false is triggering preventDefault and stopPropagation also. 
    if (location.pathname.replace(/^\//, '') == this.pathname.replace(/^\//, '') && location.hostname == this.hostname) { 
     var target = $(this.hash); 
     target = target.length ? target : $('[name=' + this.hash.slice(1) + ']'); 
     if (target.length) { 
      $('html,body').animate({ 
       scrollTop: target.offset().top - 1 
      }, 500); 
     } 
    } 
}); 
  • あなたはあなたのコードから関数を呼び出すする必要が、以来、私はそれを削除しました。

  • 動的にロードされる要素には$(document).on()を使用してください。

  • 機能内にdocument.readyを使用しないでください。

  • 本当に必要ない場合は、関数の内部にイベントハンドラを添付しないでください。代わりに、off()を使用してください。

+0

ありがとう、それがなぜ機能するのかを説明するコードコメント!確かに新しいことを学びました! –

関連する問題