2016-05-23 77 views
0

正如我所說,我創建了一個菜單,當我把它懸停時顯示聲音。在播放菜單中的另一項之後播放聲音之前,我使用的代碼與短暫停頓相關聯。我怎樣才能同時播放它,我的意思是,我如何消除暫停效果?添加聲音懸停到每個菜單項沒有一個暫停

$(document).ready(function() { 
 
    var beepOne = $("#beep-one")[0]; 
 
    $("#menu-glowne a") 
 
    .mouseenter(function() { 
 
     beepOne.pause(); 
 
     beepOne.play(); 
 
    }); 
 

 
});
<audio id="beep-one" controls="controls" preload="auto"> 
 
    <source src="http://localhost/wp-content/uploads/2016/04/Click2-Sebastian-759472264.mp3"></source> 
 
    <source src="http://localhost/wp-content/uploads/2016/04/Click2-Sebastian-759472264.wav"></source> 
 
</audio> 
 

 
<ul id="menu-glowne"> 
 
    <li><a href="#">One</a> 
 
    </li> 
 
    <li><a href="#">Two</a> 
 
    </li> 
 
    <li><a href="#">Three</a> 
 
    </li> 
 
</ul>

+0

刪除暫停它的行'beepOne.pause();'?或者你的意思是你想要重疊的聲音,例如每個懸停的新聲音? –

+2

「*我創建了一個菜單,當我將它懸停時顯示聲音*」 - 請告訴我,該網站可以由用戶靜音,或告訴我URL是什麼,這樣我就可以避免去那裏。 ......嚴重的是,除非在您的網站上明確宣佈懸停該菜單之前,這是一場用戶體驗噩夢。 –

+0

Web音頻API是最適合這種類型的操作。您將需要創建一個音頻上下文和緩衝區來源,這將允許立即進行音頻響應。點擊這裏:https://developer.apple.com/library/iad/documentation/AudioVideo/Conceptual/Using_HTML5_Audio_Video/PlayingandSynthesizingSounds/PlayingandSynthesizingSounds.html – KpTheConstructor

回答

0

與setTimeout的更換暫停,或也許jQuery的.delay()。 300毫秒超時的示例:

$(document).ready(function() { 
    var beepOne = $("#beep-one")[0]; 
    $("#menu-glowne a") 
    .mouseenter(function() { 
     setTimeout(function() { 
     beepOne.play(); 
     }, 300); 
    }); 
}); 

我不知道新聲音是否會取消上一個聲音。

另外,正如評論所說,播放聲音未宣佈是不好的用戶體驗。你最好在默認情況下禁用它,並詢問用戶,或讓他們通過複選框或其他東西啓用它。

+0

------------- --- – Ziegremic1988