(我是JS和jQuery的相对新手,所以请原谅任何轻率行为!)
当我将鼠标悬停在其他元素上时,我正在尝试随机更改音频元素中的src。我把一些东西拼凑在一起并通过带有内联JS的按钮让它工作(感谢我目前找不到的答案),但是无法让它在.hover上工作。
JS: function sounds(){
var rand = [
'http://thejazz.ninja/sounds/v.mp3',
'http://thejazz.ninja/sounds/w.mp3',
'http://thejazz.ninja/sounds/x.mp3',
'http://thejazz.ninja/sounds/y.mp3',
'http://thejazz.ninja/sounds/z.mp3'];
var randSound = rand[Math.floor(Math.random() * rand.length)];
var player=document.getElementById('player');
var sourceMp3=document.getElementById('sourceMp3');
sourceMp3.src='' + randSound + '';
player.load();
player.play();
}
$('.box').click(sounds); // this doesn't work...
HTML:
<audio id="player" autoplay>
<source id="sourceMp3" src="" type="audio/mp3" />
Your browser does not support the audio element.
</audio>
<p>
<button onclick='sounds()'> Load Sound</button> <!-- THIS works -->
</p>
CSS:
.box {
display:inline-block;
width:50px;
height:50px;
background:#aee;
}
答案 0 :(得分:2)
$('.box').click(sounds);
执行此操作时没有.box
。用$
包裹它:
$(function(){ //this function will be executed when DOM is
$('.box').click(sounds); //ready to be manipulated (!= onload)
});
或者在jsFiddle中你可以选择左边的“onLoad”/“onDomready”而不是“No wrap-in&lt; head&gt;”:http://jsfiddle.net/DerekL/D8Ln7/6/
关于“悬停”部分,请点击更改为mouseenter
:
$(function(){
$(".box").mouseenter(sounds);
});
请勿使用.hover
。 jQuery中有一个方法hover
,但在这种情况下这不起作用,因为它与您尝试的不匹配。引用文档:
[。hover]将为mouseenter和mouseleave事件执行该处理程序。
答案 1 :(得分:1)
尝试使用:
$(document).ready(function() {
$('.box').hover(sounds);
});
您必须确保在为其添加事件时呈现html元素。
答案 2 :(得分:1)
在调用悬停方法之前等待加载DOM。
$(document).ready(function(){
$( ".box" ).hover(
function() {
sounds();
}, function() {
//hover out
});
});
答案 3 :(得分:0)
$('.box').click(sounds);
而不是abouve call use必须尝试
$(document).ready(
function() {
$('.box').click(function(){
sounds();
});
});
要在悬停时拨打电话,您需要调用onBlur事件
<button onblur='sounds()'> Load Sound</button>