Я думаю братьев и сестер - это то, что вы ищете.Вы можете использовать его следующим образом:
function getTrack(elm){
let $aud = $(elm).siblings( "audio" ).first();
console.log($aud.attr("src"));
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<ul id="playList">
<li>
<a href="audio/track1.mp3">track1</a>
<audio src="audio/track1.mp3" id="aud"></audio>
<button onclick="getTrack(this)">get this track src</button>
</li>
<li>
<a href="audio/track2.mp3">track2</a>
<audio src="audio/track2.mp3" id="aud"></audio>
<button onclick="getTrack(this)">get this track src</button>
</li>
<li>
<a href="audio/track3.mp3">track3</a>
<audio src="audio/track3.mp3" id="aud"></audio>
<button onclick="getTrack(this)">get this track src</button>
</li>
</ul>
Редактировать: Код Объяснение:
Сначала в onclick
из button
s, вы должны передать this
ключевое слово, чтобы вы могли получить элемент button внутри вашей функции обратного вызова:
<button onclick="getTrack(this)">get this track src</button>
После этого внутри вашей функции обратного вызова onclick
аргумент elm
это элемент кнопки, по которому щелкают, и мы преобразуем его в элемент jquery, используя $(elm)
, чтобы использовать его функцию siblings
, которая возвращает элементы одного и того же элемента кнопки.Здесь мы используем селектор "audio"
, потому что мы просто хотим получить брат audio
кнопки, а также first()
, потому что функция siblings
будет возвращать список соответствующих элементов, в то время как мы просто хотим первый элемент.
let $aud = $(elm).siblings( "audio" ).first();
Так что теперь $aud
- это элемент audio
, связанный с нажатой кнопкой, и мы должны получить его атрибут src
, используя функцию attr
.
console.log($aud.attr("src"));