html5 аудиоплеер - jquery переключить воспроизведение / пауза? - PullRequest
49 голосов
/ 07 июня 2010

Интересно, что я делаю не так?

    $('.player_audio').click(function() {
    if ($('.player_audio').paused == false) {
        $('.player_audio').pause();
        alert('music paused');
    } else {
        $('.player_audio').play();
        alert('music playing');
    }
});

Не получается запустить звуковую дорожку, если я нажму на тэг player_audio.

<div class='thumb audio'><audio class='player_audio' src='$path/$value'></audio></div>

есть идеи, что я делаю неправильно или что мне нужно сделать, чтобы это заработало?

Ответы [ 15 ]

98 голосов
/ 30 ноября 2011

Вы можете вызывать нативные методы через триггер в jQuery. Просто сделай это:

$('.play').trigger("play");

И то же самое для паузы: $('.play').trigger("pause");

РЕДАКТИРОВАТЬ: как F ... указал в комментариях, вы можете сделать что-то похожее на свойства доступа: $('.play').prop("paused");

68 голосов
/ 07 июня 2010

Ну, я не уверен на 100%, но я не думаю, что jQuery расширяет / анализирует эти функции и атрибуты (.paused, .pause(), .play()).

пытается получить доступте, что над элементом DOM, например:

$('.player_audio').click(function() {
  if (this.paused == false) {
      this.pause();
      alert('music paused');
  } else {
      this.play();
      alert('music playing');
  }
});
17 голосов
/ 01 ноября 2011

Я не уверен почему, но мне нужно было использовать старый документ skool.getElementById ();

<audio id="player" src="http://audio.micronemez.com:8000/micronemez-radio.ogg"> </audio>
<a id="button" title="button">play sound</a>

и JS:

$(document).ready(function() {
  var playing = false;

  $('a#button').click(function() {
      $(this).toggleClass("down");

      if (playing == false) {
          document.getElementById('player').play();
          playing = true;
          $(this).text("stop sound");

      } else {
        document.getElementById('player').pause();
        playing = false;
        $(this).text("restart sound");
      }

  });
});

Посмотрите пример: http://jsfiddle.net/HY9ns/1/

16 голосов
/ 19 апреля 2013

Эта тема была весьма полезной. Селектору jQuery нужно сообщить, к какому из выбранных элементов относится следующий код. Самый простой способ - добавить

    [0]

например

    $(".test")[0].play();
2 голосов
/ 14 июня 2017

было бы неплохо включить одну строку кода:

let video = $('video')[0];
video[video.paused ? 'play' : 'pause']();
2 голосов
/ 12 апреля 2013

Попробуйте использовать Javascript. Это работает для меня

Javascript:

var myAudioTag = document.getElementById('player_video');
myAudioTag.play();
1 голос
/ 05 апреля 2017

Просто используйте

$('audio').trigger('pause');
1 голос
/ 07 июня 2010

Потому что Firefox не поддерживает формат mp3. Чтобы это работало с Firefox, вы должны использовать формат ogg.

0 голосов
/ 20 мая 2019

Простой Добавить этот код

        var status = "play"; // Declare global variable

        if (status == 'pause') {
            status='play';                
        } else {
            status = 'pause';     
        }
        $("#audio").trigger(status);    
0 голосов
/ 01 декабря 2017

Если вы хотите играть в нее, вы должны использовать

$("#audio")[0].play();

Если вы хотите остановить это, вы должны использовать

$("#audio").stop();

Не знаю почему, но это работает!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...