Jquery/Javascript-向我的小函数添加回调,仅当我选择
当我启动scrollMyScreen函数时,我希望有时能够调用回调函数(我希望它是我的flashArrow函数),我认为它类似于:Jquery/Javascript-向我的小函数添加回调,仅当我选择,javascript,jquery,function,callback,Javascript,Jquery,Function,Callback,当我启动scrollMyScreen函数时,我希望有时能够调用回调函数(我希望它是我的flashArrow函数),我认为它类似于:scrollMyScreen(flashArrow()),但显然这不起作用。我的flashArrow函数实际上比警报更大,这只是一个例子 function scrollMyScreen() { $('body').delay(600).animate({scrollTop: $(target).offset().top}, 1000, callback) }
scrollMyScreen(flashArrow())
,但显然这不起作用。我的flashArrow函数实际上比警报更大,这只是一个例子
function scrollMyScreen() {
$('body').delay(600).animate({scrollTop: $(target).offset().top}, 1000, callback)
}
function flashArrow () {
alert('FLASHING ARROW!')
};
那么,我能做些什么来让它工作呢?我想调用scrollMyScreen,然后有时将函数flashArrow()添加为回调函数,或者在scrollMyScreen完成后添加函数
示例案例:
case "header":
scrollMyScreen()
break
case "wrapper":
scrollMyScreen(flashArrow())
break
您需要传递对flashArrow
的引用,而不是调用flashArrow()
的结果:
(别忘了将回调
参数声明为scrollMyScreen()
也!)您需要传递对flashArrow
的引用,而不是调用flashArrow()
的结果:
(不要忘记将回调
参数声明为scrollMyScreen()
)
然后,您可以拨打:
scrollMyScreen(someFunction);
或:
更新:修复回调空问题
function scrollMyScreen(callback) {
if (typeof(callback) == "function")
$('body').delay(600).animate({scrollTop: $(target).offset().top}, 1000, callback);
else
$('body').delay(600).animate({scrollTop: $(target).offset().top}, 1000);
}
然后,您可以拨打:
scrollMyScreen(someFunction);
或:
更新:修复回调空问题
function scrollMyScreen(callback) {
if (typeof(callback) == "function")
$('body').delay(600).animate({scrollTop: $(target).offset().top}, 1000, callback);
else
$('body').delay(600).animate({scrollTop: $(target).offset().top}, 1000);
}
谢谢,伙计,嘿,如果我把scrollMyScreen和flashArrow变成变量而不是函数,我所要求的也能实现吗?只有当变量的值是函数的引用时,它才能被“调用”。所以你仍然必须像现在一样声明它们。谢谢,伙计,嘿,如果我把scrollMyScreen和flashArrow变成变量而不是函数,我所要求的也能实现吗?只有当变量的值是对函数的引用时,它才能被“调用”。所以你仍然必须像现在一样声明它们。嘿,你能解释一下为什么需要
typeof(callback).
部分吗?如果我只有scrollMyScreen()代码>它不工作,我需要添加null:scrollMyScreen(null)代码>在我的代码中,现在我有一个回调和一个yoffset:scrollMyScreen(yoffset,callback)
,我尝试了你的代码,但是如果我不声明回调或yoffset,它不能阻止我添加Null。我修复了这个问题。如果传递函数,则typeof(callback)将返回“function”,如果未传递任何函数,则返回“undefined”。scrollMyScreen中的逻辑确保根据回调参数的存在与否进行正确的jQuery调用。嘿,你能解释一下为什么需要typeof(callback)…
部分吗?如果我只有scrollMyScreen()代码>它不工作,我需要添加null:scrollMyScreen(null)代码>在我的代码中,现在我有一个回调和一个yoffset:scrollMyScreen(yoffset,callback)
,我尝试了你的代码,但是如果我不声明回调或yoffset,它不能阻止我添加Null。我修复了这个问题。如果传递函数,则typeof(callback)将返回“function”,如果未传递任何函数,则返回“undefined”。scrollMyScreen中的逻辑确保根据回调参数的存在与否进行正确的jQuery调用。
scrollMyScreen();
function scrollMyScreen(callback) {
if (typeof(callback) == "function")
$('body').delay(600).animate({scrollTop: $(target).offset().top}, 1000, callback);
else
$('body').delay(600).animate({scrollTop: $(target).offset().top}, 1000);
}