2016-04-01 100 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(); 
     } 
    }); 
}); 
相关问题