【发布时间】:2022-01-11 21:18:55
【问题描述】:
为什么当我在这里使用 .prev()(与 .next() 相同)来启动除 r2 之前的音频之外的所有音频时,它会启动除 r2 和一些随机的音频(不完全是先前的音频)之外的所有音频?它应该只播放 r2 元素的前一个。我试着理解这一点
<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>
【问题讨论】:
-
$("audio").not("#r2").prev()将选择 ID 为 r2、r4 和 r5 的元素。那么你真正想做的是什么? -
我尝试选择除 "#r2" 之前的 ID 之外的所有 ID 并将它们设为 .play。在这种情况下,答案是“选择除“r1”之外的所有内容,但我尝试了解使用 .prev() 和 .next() 的一般方式。这背后的想法是学习如何编写“播放除给定 ID 的 3 个前一个和 3 个后一个 ID 之外的所有音频”
-
.not("#r2").prev()不是上下文过程。.not('#r2')与.prev()的功能无关。 -
.not 接受一个函数,您可以使用与 .filter 相同的方法从集合中直接过滤掉 #r2 之前的任何元素。或者,.not 也接受一个集合,因此您可以选择 #r2 的前一个兄弟并将其传递给 .not。
.not($('#r2').prev()) -
你是对的。 fmquaglia 也纠正了我的误解。但是现在如何编写“播放除 r2 之前的所有内容”的代码?最后“播放除了给定ID的前一个ID,这个给定ID的第二个和第三个之前的所有内容”?
标签: javascript jquery