我的问题可能很简单,但我无法通过互联网找到答案,所以我在这里问:
我有以下代码:
function TriggerHeader() {
//doing great stuff
}
function TriggerSlider() {
//doing other stuff
}
在检查完所有条件之后,我有一个调用正确触发器的函数。
function Action() {
$(".content").fadeOut("fast",function () {
TriggerSlider() {
TriggerHeader();
};
});
}
所以当(“。content”)。fadeOut结束时调用TriggerSlider()(因为我希望它) 但我正在寻找调用TriggerHeader()的正确方法;当TriggerSlider()结束时。我写它的方式是错的,但我不知道为什么。 有人能让我高兴吗?
答案 0 :(得分:1)
这些行在语法上是不正确的:
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);
});
}
答案 1 :(得分:1)
取决于TriggerSlider
和TriggerHeader
的内容。
TriggerSlider();
TriggerHeader();
TriggerSlider
有一个带回调的动画:function TriggerSlider(callb) {
//Most of your code here
$("element").slideUp(callb);
}
TriggerSlider(TriggerHeader);
function TriggerSlider() {
//Most of your code here
return $("element").slideUp();
}
$.when(TriggerSlider()).done(TriggerHeader);
答案 2 :(得分:0)
这实际上取决于TriggerSlider()
和TriggerHeader()
的实施方式。如果他们不做任何涉及超时和“单独线程”的事情,他们会一个接一个地打电话:
TriggerSlider();
TriggerHeader();
- )
另一方面,如果TriggerSlider()
包含动画或其他异步内容,则需要将其完成回调作为函数的参数实现:
function TriggerSlider(completionCallback) {
setTimeout(500, function() {
// do something
// and finally
completionCallback();
}
}
现在您可以调用TriggerSlider并将其传递给函数以调用完成:
TriggerSlider(TriggerHeader);
请注意,我没有传递TriggerHeader()
,因为这会调用该函数并返回结果。我将函数作为函数传递,函数调用发生在TriggerSlider
。
答案 3 :(得分:0)
您遇到的问题是,您正在尝试重新定义Triggerslider在您编写TriggerSlider() { //code }
时所执行的操作。这在语法上是不正确的。
如果你想在滑块之后执行标题功能,这应该可行。
function TriggerHeader() {
//doing great stuff
}
function TriggerSlider() {
//doing other stuff
TriggerHeader();
}
function Action() {
$(".content").fadeOut("fast",function () { TriggerSlider();});
}
还有其他方法可以使用回调来解决此问题。但是如果你总是想要触发相同的功能,那么这应该有效。