2013-08-14 3 views
0

정의 반환한다. 그래서 중첩 된 함수에서 사용할 수 있어야합니다. 그러나 mouseout 이벤트는 결과를 생성하지 않습니다. 내가 도대체 ​​뭘 잘못하고있는 겁니까? 어떤 도움을 주셔서 감사합니다.변수는 변수는 my_sound는 먼저 외부 함수 선언

$(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); 
     }); 
    }); 
}); 
+1

이는 my_sound 내가'당신이 $ ("는 my_sound")'를 사용하는 것을 의미 생각하지 않는다없는 요소가 바로 ' –

+2

을 my_sound.animate' 않는 변수입니다 시도해 볼 수도, 당신은 아마 원하는'$ (my_sound)'하지만 이미 jQuery 객체이므로 my_sound.animate()만으로 충분합니다. –

+0

my_sound.animate()는 여전히 undefined를 반환합니다. – jwelter

답변

0

문제는 아마 (따라서 그 문제에 대한, 또는 아무것도, undefined) JQuery와 객체를 반환하지 않는 .play()입니다. 다른 의견이 말했듯이

또한, 당신이 $('my_sound').whatever하지만 싶지 않아 오히려 단지 my_sound.whatever그것이 아닌 jQuery를 객체, 있다면. 그래서 어쩌면 당신이

var $my_sound = $("<audio />").attr("suchandsuch","etc"); 
$my_sound.load().get(0).play(); 
$my_sound.whatever();