2016-04-01 14 views
0

他の関数に引数として関数を渡そうとしています。私は私の機能に期待何他の関数の引数としての関数JQuery

//Scroll To + Remove Class if exists 


$(document).on("click", "a[href^=\\#]", function() { 

    $("html, body").animate({ 

     scrollTop: $('section[data-attr-target="'+this.hash.slice(1)+'"]').offset().top }, 300); 

    return false; 

}, fun()); 

function fun() { 

    if(("menu").hasClass("active")) { 

    $("menu").removeClass("active"); 

    } 
} 

JS Bin full example

  1. Clickイベント
  2. スクロールセクションに
  3. 楽しい()が起動し、かどうかをチェックする$( "メニュー" アップ)は "アクティブ"のクラスを持っています。もしそうなら、それを削除します。

楽しい()関数の引数の中が行動を壊す(それなしで関数は要素へのスクロールのために働く)が、私は$(「メニュー」)要素のクラスをチェックする楽しい()を必要としています。

私が間違っていることを説明してください。

+1

jQueryの '' 2つのコールバックを取ることはありません)(上、あなたはおそらく前に**その関数を呼び出すしたい** 'falseを返します。 }、 '部分、アニメーション部分の直後、これはあなたが本当にやりたかったことです - > ** https://jsfiddle.net/qxkmygzb/** – adeneo

+0

私はfun()関数を" return false "クラスをチェックしていない、それは私が理解できるように実行されていません –

+0

FYI:クラスを削除するために何かをチェックする必要はありません、ちょうどフィドルのように私は上に投稿 – adeneo

答えて

1

要素のアニメーションが完了すると呼び出されるcomplete functionを使用する必要があります。ここで

は一例でありhttp://jsfiddle.net/tg5op333/29/

$(document).on("click", "a[href^=\\#]", function() { 
    $("html, body").animate({ 
     scrollTop: $('section[data-attr-target="'+this.hash.slice(1)+'"]').offset().top}, 
     {duration: 300, 
     specialEasing: { 
     width: "linear", 
     height: "easeOutBounce" 
     }, 
     complete: function() { 
      fun(); 
     } 
    }); 
}); 
関連する問題