是否有可能重复功能排除一种方法

时间:2014-04-24 19:26:43

标签: javascript jquery

var myfunction = function(){

         $('.menu').delay(3000).slideDown("fast").attr('style', 'color:#fff')

        return false;
});

我可以重复myfunction排除delay(3000)吗?

表示$('#submit').click(myfunction);之类的内容,但myfunction应排除.delay(3000)

2 个答案:

答案 0 :(得分:1)

使用时间变量设置您的功能:

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

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

myfunction(3000);

myfunction(0);

答案 1 :(得分:1)

在这种情况下,我喜欢创建一个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)