2016-04-01 95 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的'在()'不採取兩個回調,你可能想之前調用該函數**的'返回false; },''在動畫部分之後,這就是你真正想做的事情 - > ** https://jsfiddle.net/qxkmygzb/** – adeneo

+0

如果我把fun()函數放在「return false」之前,沒有檢查班級,它沒有執行,因爲我能理解 –

+0

僅供參考:你不必檢查任何東西來刪除班級,只是做在我張貼在 – 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(); 
     } 
    }); 
}); 
相關問題