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 函数链接:.done()-Function 立即调用