将一个函数转换为另一个函数jquery
我的问题可能很简单,但我在互联网上找不到答案,所以我在这里问: 我有以下代码:将一个函数转换为另一个函数jquery,jquery,function,Jquery,Function,我的问题可能很简单,但我在互联网上找不到答案,所以我在这里问: 我有以下代码: function TriggerHeader() { //doing great stuff } function TriggerSlider() { //doing other stuff } 在检查了每个条件之后,我有了一个调用正确触发器的函数 function Action() { $(".content").fadeOut("fast",function () { TriggerSlider
function TriggerHeader() {
//doing great stuff
}
function TriggerSlider() {
//doing other stuff
}
在检查了每个条件之后,我有了一个调用正确触发器的函数
function Action() {
$(".content").fadeOut("fast",function () {
TriggerSlider() {
TriggerHeader();
};
});
}
因此,当(“.content”).fadeOut结束时(正如我所希望的那样)调用TriggerSlider()
但是我正在寻找调用TriggerHeader()的正确方法;当TriggerSlider()结束时。我写它的方式是错误的,但我不知道为什么。
有人能启发我吗?这真的取决于
TriggerSlider()
和TriggerHeader()
是如何实现的。如果他们不做任何涉及超时和“独立线程”的事情,他们一个接一个地调用的方法是:
TriggerSlider();
TriggerHeader();
;-)
另一方面,如果TriggerSlider()
包含动画或其他异步内容,则需要将其完成回调作为函数的参数实现:
function TriggerSlider(completionCallback) {
setTimeout(500, function() {
// do something
// and finally
completionCallback();
}
}
现在,您可以调用TriggerSlider并将函数传递给它以在完成时调用:
TriggerSlider(TriggerHeader);
请注意,我没有传递
TriggerHeader()
,因为这将调用函数并返回结果。我将函数作为函数传递,函数调用发生在TriggerSlider
中。这些行在语法上不正确:
TriggerSlider() {
TriggerHeader();
};
您必须调整TriggerSlider
函数,以便在完成后允许回调:
function TriggerSlider(callback) {
// do stuff
// ...
// now invoke the callback:
callback();
// or pass it to a jQuery function
}
现在,您可以按如下方式设置链:
function Action() {
$(".content").fadeOut("fast",function () {
TriggerSlider(TriggerHeader);
});
}
它取决于
TriggerSlider
和TriggerHeader
的内容
如果它们是同步的:
如果TriggerSlider
有一个带有回调的单个动画:
使用Promise API
您遇到的问题是,当您以编写Triggerslider(){//code}的方式编写Triggerslider时,您试图重新定义Triggerslider的功能。这在语法上是不正确的 如果您想在滑块之后执行header函数,这应该可以工作
function TriggerHeader() {
//doing great stuff
}
function TriggerSlider() {
//doing other stuff
TriggerHeader();
}
function Action() {
$(".content").fadeOut("fast",function () { TriggerSlider();});
}
使用回调还有其他解决此问题的方法。但是,如果您总是希望触发相同的函数,那么这应该可以正常工作。它可以与Promise API配合使用(不与回调配合使用),非常感谢!
function TriggerHeader() {
//doing great stuff
}
function TriggerSlider() {
//doing other stuff
TriggerHeader();
}
function Action() {
$(".content").fadeOut("fast",function () { TriggerSlider();});
}
function TriggerSlider() {
//Most of your code here
return $("element").slideUp();
}
$.when(TriggerSlider()).done(TriggerHeader);
function TriggerHeader() {
//doing great stuff
}
function TriggerSlider() {
//doing other stuff
TriggerHeader();
}
function Action() {
$(".content").fadeOut("fast",function () { TriggerSlider();});
}