【问题标题】:jQuery: Delay a variables play() function?jQuery:延迟变量 play() 函数?
【发布时间】: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
  • 在这个例子中我将如何使用它?干杯:)

标签: javascript jquery audio


【解决方案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);
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-08-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多