1

我正在使用 switch() 在按下某些键时播放声音,但我想让声音循环停止并在松开键时重置。这是我的代码:

$(function() {
   $(document).on("keydown", function(key) {
        switch(parseInt(key.which, 10)) {
            case 65:
                $("#sound").get(0).play();
                break;

            case 83:
                $("#sound2").get(0).play();
                break;

            case 68:
                $("#sound3").get(0).play();
                break;

            case 70:
                $("#sound4").get(0).play();
                break;

        };
   }).on("keyup", function() {
      $(this).pause();
      $(this).currentTime=0;
  });
});

我认为我的问题在于在 keyup 处理程序中使用 $(this) ,但我不想将每个声音 id 指定为变量,因为我最终会有很多。有没有办法简单地做到这一点?

谢谢您的帮助!

4

1 回答 1

1

thiskeyup 处理程序内部引用文档对象,您可以尝试保留对当前播放声音元素的引用

$(function() {
    var playing;
    $(document).on("keydown", function(key) {
        playing = undefined;
        switch(parseInt(key.which, 10)) {
            case 65:
                playing = $("#sound").get(0);
                break;

            case 83:
                playing = $("#sound2").get(0);
                break;

            case 68:
                playing = $("#sound3").get(0);
                break;

            case 70:
                playing = $("#sound4").get(0);
                break;

        };
        if(playing){
            playing.play();
        }
    }).on("keyup", function() {
        if(playing){
            playing.pause();
            playing.currentTime=0;
            playing = undefined;
        }
    });
});
于 2013-10-18T02:47:02.317 回答