是否可以重复函数排除一种方法


var myfunction = function(){
         $('.menu').delay(3000).slideDown("fast").attr('style', 'color:#fff')
        return false;
});

我可以重复我的函数排除delay(3000)吗?

意思类似于$('#submit').click(myfunction);,但myfunction应排除.delay(3000)

使用时间变量设置函数:

var myfunction = function(delayTime) {
    $('.menu').delay(delayTime).slideDown("fast").attr('style', 'color:#fff')
    return false;
});

然后用时间值作为参数调用它:

myfunction(3000);

myfunction(0);

在这种情况下,我喜欢创建一个curried函数(即一个返回函数的函数(。

function myFunction(doDelay){
  return function(){
    $('.menu').delay(doDelay ? 3000 : 0).slideDown('fast') //...
    return false
  }
}

然后你可以像一样设置你的点击监听器

$('#submit').click(myFunction(false))

并使用类似myFunction(true)()的延迟来调用它,或者创建不同的延迟实例,如var myFunctionDelayed = myFunction(true)var myFunctionNoDelay = myFunction(false)

相关内容