javascript setTimeout 或 jquery delay - 两者都不适合我

标签 javascript jquery delay settimeout

我有一个像这样的div

<div id="sale">
    ........
</div>

我尝试同时使用两者

$('#sale').delay(3000).slideDown(500);

setTimeout(sale(), 3000);

function sale() {
    $('#sale').slideDown(500);
}

但他们都没有工作。 jQuery 延迟表示 $('#sale').delay() 不是函数,而 setTimeout 方式表示无用的 setTimeout 调用(丢失引号)。如果我在 sale() 调用周围添加双引号,它只会显示“Sale is not defined”。

为什么这两个都不行?

我想要做的就是让一个 div 在页面加载后 3 秒出现。

最佳答案

setTimeout 的情况下,你只是做错了。

setTimeout(sale(), 3000); // will call sale and use the RETURN value in the callback but sale returns undefined

需要传入一个函数:

function sale() {
    $('#sale').slideDown(500);
}

setTimeout(sale, 3000); // just pass in the reference to sale()

其他可能性:

// no difference in this case
// Note: if it were obj.sale() then you would need to do this version
//       otherwise sale() will get called with the this set to window
setTimeout(function(){sale()}, 3000) 

最后但同样重要的是:

setTimeout(function() { $('#sale').slideDown(500); }, 3000);

关于javascript setTimeout 或 jquery delay - 两者都不适合我,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4262727/

相关文章:

javascript - JS/jQuery : Popupbox with options

javascript - jQuery 动画之间的延迟

json - Flutter - 延迟 json 请求每次执行一次

javascript - Javascript 中孤独的代码块的目的是什么?

javascript - Jquery页面变化无闪烁效果

javascript - 将参数传递给内联函数

css - 如何在动画之间延迟并在 css 中的前一个动画之后出现

javascript - 为什么 Accordion 类会触发其他名称不同的面板

javascript - 有没有办法让选择的内容下推?

jquery - 单选按钮的绑定(bind)日期选择器