jQuery:延迟变量 play() 函数?

Posted

技术标签:

【中文标题】jQuery:延迟变量 play() 函数?【英文标题】:jQuery: Delay a variables play() function? 【发布时间】:2014-02-18 10:26:10 【问题描述】:

我对使用 jQuery 很陌生,我正在使用以下代码将淡入淡出的 div 插入到页面中。

$("#DivIdGoesHere").delay(time).fadeIn(time);

我正在使用以下代码播放声音文件。

var shrill_strings = new Audio('audio/shrill_strings.ogg');
shrill_strings.play();

我只是想知道是否有办法这样做:

$shrill_stings.delay(time).play(time);

感谢您的帮助。

【问题讨论】:

据我了解,delay() 在这里不起作用,请改用setTimeout 在这个例子中我将如何使用它?干杯:) 【参考方案1】:
setTimeout(function () 
  new Audio('audio/shrill_strings.ogg').play();
, 1000);

【讨论】:

【参考方案2】:

您可以在这里尝试setTimeout() js 方法。

所以不要这样:

$("#DivIdGoesHere").delay(time).fadeIn(time);

你可以试试这个:

setTimeout(function()
    $("#DivIdGoesHere").fadeIn(time);
, time);

所以最后你可以试试下面的代码:

var shrill_strings = new Audio('audio/shrill_strings.ogg');

setTimeout(function()
    shrill_strings.play(time);
, time);

其中var time 是以毫秒为单位的时间。

【讨论】:

【参考方案3】:

delay(time) 之所以有效,是因为所有 jQuery 动画都被添加到一个队列中,并且它们是从该队列中异步提取以执行的。 delay() 调用基本上将另一个动画添加到队列中,它不会更改任何属性并强制队列中的后续动画稍后开始。

由于play()方法没有使用jQuery的效果队列,所以延迟对它没有影响。

正如其他答案所提到的,您需要直接使用setTimeout 来延迟启动声音:

var shrill_strings = new Audio('audio/shrill_strings.ogg');
setTimeout(shrill_strings.play.bind(shrill_strings), time);

【讨论】:

以上是关于jQuery:延迟变量 play() 函数?的主要内容,如果未能解决你的问题,请参考以下文章

如何在延迟的情况下调用 jquery 函数 onload?

键控函数之间的 Jquery 延迟

带有延迟的 jQuery 函数链接:.done()-Function 立即调用

JavaScript / jQuery - 在添加和删除类与下一个函数之间添加延迟[重复]

“onplay”有延迟吗?

jQuery 中 .trigger('play') 和 .play() 的区别