lettore audio html5 – jquery triggers / distriggers la riproduzione?

mi chiedo cosa sto facendo di sbagliato?

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

Non riesco a far partire la traccia audio se premo il tag “player_audio”.

 

Qualche idea su cosa sto facendo male o cosa devo fare per farlo funzionare?

Beh, non sono sicuro al 100%, ma non credo che jQuery estenda / analizzi quelle funzioni e attributi ( .paused , .pause() , .play() ).

prova ad accedere a quelli sopra l’elemento DOM, come:

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

Puoi chiamare i metodi nativi tramite trigger in jQuery. Basta fare questo:

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

E lo stesso per pausa: $('.play').trigger("pause");

EDIT: come F … ha sottolineato nei commenti, puoi fare qualcosa di simile alle proprietà di accesso: $('.play').prop("paused");

Non sono sicuro del perché, ma avevo bisogno di usare il vecchio skool document.getElementById ();

  play sound 

e il 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"); } }); }); 

Guarda un esempio: http://jsfiddle.net/HY9ns/1/

Questa discussione è stata molto utile. Il selettore jQuery deve essere detto a quale degli elementi selezionati si applica il seguente codice. Il modo più semplice è aggiungere un

  [0] 

ad esempio

  $(".test")[0].play(); 

Prova a usare Javascript. Funziona per me

Javascript:

 var myAudioTag = document.getElementById('player_video'); myAudioTag.play(); 

Perché Firefox non supporta il formato mp3. Per farlo funzionare con Firefox, dovresti usare il formato ogg.

Semplicemente Usa

 $('audio').trigger('pause'); 

potrebbe essere bello triggersre una riga di codice:

 let video = $('video')[0]; video[video.paused ? 'play' : 'pause'](); 

L’ho fatto all’interno di una fisarmonica jQuery.

 $(function() { /*video controls*/ $("#player_video").click(function() { if (this.paused == false) { this.pause(); } }); /*end video controls*/ var stop = false; $("#accordion h3").click(function(event) { if (stop) { event.stopImmediatePropagation(); event.preventDefault(); stop = false; } $("#player_video").click(); }); }); 

se qualcun altro ha problemi con le soluzioni di cui sopra, ho finito per andare per l’evento:

 $("#jquery_audioPlayer").jPlayer({ ready:function () { $(this).jPlayer("setMedia", { mp3:"media/song.mp3" }) ... pause: function () { $('#yoursoundcontrol').click(function () { $("#jquery_audioPlayer").jPlayer('play'); }) }, play: function () { $('#yoursoundcontrol').click(function () { $("#jquery_audioPlayer").jPlayer('pause'); })} }); 

per me va bene.

Ecco la mia soluzione usando jQuery

  

E la demo funzionante

http://demo.ftutorials.com/html5-audio/

Il motivo per cui il tuo tentativo non ha funzionato è che hai usato un selettore di class, che restituisce una raccolta di elementi, non un elemento (= uno!), Che è necessario accedere alle proprietà e ai metodi dei giocatori. Per farlo funzionare ci sono fondamentalmente tre modi, che sono stati menzionati, ma solo per una panoramica:

Ottieni l’elemento – non una collezione – di …

  • Facendo un passo sulla colllection e recuperando l’ elemento con this (come nella risposta accettata).

  • Utilizzando un id-selector, se disponibile.

  • Ottenere l’elemento di una raccolta, recuperandolo, tramite la sua posizione nella raccolta aggiungendo [0] al selettore, che restituisce il primo elemento della raccolta.

Ecco la mia soluzione (se vuoi fare clic su un altro elemento nella pagina):

 $("#button").click(function() { var bool = $("#player").prop("muted"); $("#player").prop("muted",!bool); if (bool) { $("#player").prop("currentTime",0); } }); 

Se vuoi giocare, dovresti usare

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

Se vuoi fermarlo, dovresti usare

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

Non so perché, ma funziona!