为什么这不起作用?
$('#plugbot-likebox').hover(function () {
$('#plugbot-ui').slideDown();
$('#ZobrazNastavenia').fadeOut("fast");
}, function () {
toUi = setTimeout(function(){
$('#plugbot-ui').slideUp();
}, 1500);
toNastavenia = setTimeout(function(){
$('#ZobrazNastavenia').fadeIn("fast");
}, 2000);
});
我需要明确超时但这不起作用。请告诉我为什么。感谢。
答案 0 :(得分:2)
timeoutUI
和timeoutNastavenia
是本地作用于您定义的匿名函数的变量。
如果您希望它们在更广泛的范围内可用,那么您必须在更广泛的范围内声明它们。
不要在匿名函数中使用var
。请在这些功能之外使用var variableName
。 (例如,在问题代码的第一行之前)。
答案 1 :(得分:0)
这是清除超时的示例:
var myVar;
function myFunction()
{
myVar = setTimeout(function(){alert("Hello")},3000);
}
function myStopFunction()
{
clearTimeout(myVar);
}
你可以看到myVar是在全局范围内定义的,所以在你的代码中它不起作用,因为timeoutUI和timeoutNastavenia是私有变量,你应该使用timeoutUI=...
而不是var timeoutUI=..
答案 2 :(得分:0)
如果我使用jQuery和超时,那么我总是将它们设置在元素本身上:
$('#plugbot-ui').data(
'timeout-toUi',
setTimeout(function(){
$('#plugbot-ui').slideUp();
}, 1500)
);
通过这种方式,您可以通过从元素本身获取ID来清除超时:
clearTimeout($('#plugbot-ui').data('timeout-toUi'));
顺便说一句,使用jQuery时,您可以使用.delay()
:
$('#plugbot-ui').delay(1500).slideUp();
您可以使用.stop()
停止动画并清除并完成所有动画:
$('#plugbot-ui').stop(true, true);