¿Por qué cuando uso .prev() (lo mismo ocurre con .next()) aquí para iniciar todos los audios excepto el anterior a r2, inicia todos excepto r2 y alguno aleatorio (no exactamente anterior)? Debe reproducir solo el anterior al elemento r2. trato de entender esto
<html> <head> <script type="text/javascript" src="RadioN.js"></script> <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"> </script> <script> $(document).ready(function(){ $("#i1").click(function(){ var player = $("audio").not("#r2").prev();for(i=0; i<player.length; i++) player[i].play(); }); }); </script> </head> <body> <a href="#"> <img id="i1" src="r1.png" style="height:50px"></a><br> <div> <audio class="r" id="r1" src="https://rs103-krk-cyfronet.rmfstream.pl/RMF24" controls preload="none" style="visibility: visible"></audio> <audio class="r" id="r2" src="https://radiostream.pl/tuba10-1.mp3" controls preload="none" style="visibility: visible"></audio> <audio class="r" id="r4" src="https://c13.radioboss.fm:18296/stream" controls preload="none" style="visibility: visible"></audio> <audio class="r" id="r5" src="http://stream.affordablestreaming.com:8000/KDDL.mp3" controls preload="none" style="visibility: visible"></audio> <audio class="r" id="r6" src="https://p10.p4groupaudio.com/P10_MM" controls preload="none" style="visibility: visible"></audio> </div> </body> </html>El método prev de jQuery devolverá la matriz de hermanos anteriores de los elementos que coinciden con .not('#r2') .
.not('#r2') devolverá [audio#r1.r, audio#r4.r, audio#r5.r, audio#r6.r] .
.not('#r2').prev() devolverá [audio#r2.r, audio#r4.r, audio#r5.r] . Esto es :
#r1 hermano anterior no devolverá ninguno#r4 hermano anterior será #r2#r5 hermano anterior será #r4#r6 será #r5 Si lo que quieres es jugar solo el hermano anterior a #r2 debes usar un selector más determinista. algo como $("audio#r2").prev().get(0).play() puede ser?