2014-02-18 62 views
2

我是使用jQuery的新手,我使用下面的代码插入淡入div到页面中。jQuery:延迟变量play()函数?

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

,我使用下面的代码来播放声音文件。

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

我只是想知道是否有办法做到像:

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

任何帮助表示赞赏,感谢。

+0

按我的理解'延迟()'不会在这里工作,尝试'setTimeout'代替 – Satpal

+0

会如何我在这个例子中使用它?欢呼:) – user3265690

回答

2
setTimeout(function() { 
    new Audio('audio/shrill_strings.ogg').play(); 
}, 1000); 
+0

这一个工作出色,谢谢! :) – user3265690

1

您可以在这里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是时候以毫秒为单位。

0

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

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

至于其他的答案,提到的,你需要直接使用setTimeout延迟开始的声音:

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