变量my_sound在第一个外部函数中声明。所以,我应该能够在嵌套函数中使用它。但是,mouseout事件不会产生任何结果。我究竟做错了什么?谢谢你的帮助。
$(document).ready(function () {
var starting_pics = ["CN.gif", "EN.gif", "GN.gif"];
var starting_sounds = ["CN.mp3", "EN.mp3", "GN.mp3"];
var i = 0;
for (i = 0; i < starting_pics.length; i++) {
$("<img/>").attr("src", "images/" + starting_pics[i]).appendTo("#main").addClass("pics");
}
$("#main").on("click", ".pics", function () {
var i = $(this).index();
var my_sound =($("<audio/>").attr("src", "audio/" + starting_sounds[i])).load().get(0).play();
$("#main").on("mouseout", ".pics", function () {
$("my_sound").animate({ volume: 0 }, 1000);
});
});
});
答案 0 :(得分:0)
问题可能是.play()
没有返回jQuery对象(或者任何东西,因此undefined
)。
此外,正如其他评论所说,你不希望$('my_sound').whatever
而只是my_sound.whatever
,如果它是一个jQuery对象,它不是。所以也许你可以试试
var $my_sound = $("<audio />").attr("suchandsuch","etc");
$my_sound.load().get(0).play();
$my_sound.whatever();