2 回答

TA貢獻1806條經驗 獲得超8個贊
如果我沒看錯,那么您可以使用$.index()
獲取被單擊元素的源<a>
。
.index()
?/?.index( selector )
?/?.index( object )
描述:從匹配的元素中搜索給定的元素。
返回值
如果沒有參數傳遞給該.index()
方法,則返回值是一個整數,表示第一個元素在 jQuery 對象中相對于其兄弟元素的位置。如果
.index()
在元素集合上調用并且傳入 DOM 元素或 jQuery 對象,.index()
則返回一個整數,指示傳遞的元素相對于原始集合的位置。如果選擇器字符串作為參數傳遞,
.index()
則返回一個整數,指示 jQuery 對象中第一個元素相對于選擇器匹配的元素的位置。如果沒有找到該元素,.index()
將返回-1。
$(function() {
? const sources = [ '1','2','3','4','5','6','7','8','9','10' ],
? ? ? ? anchors = $("a");
? anchors.on('click', function(ev) {
? ? ev.preventDefault();
??
? ? const indexOfClickedAnchor = anchors.index(this),
? ? ? ? ? source = sources[indexOfClickedAnchor];
??
? ? console.log(indexOfClickedAnchor, source);
??
? ? /*?
? ? $('#music').attr('src', source)
? ? ? ? ? ? ? ?.get(0)
? ? ? ? ? ? ? ?.play();
? ? */
? });
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<a href="">1</a><a href="">2</a><a href="">3</a><a href="">4</a><a href="">5</a>
<a href="">6</a><a href="">7</a><a href="">8</a><a href="">9</a><a href="">10</a>

TA貢獻1951條經驗 獲得超3個贊
該i變量已提升,因此您應該將其聲明為 let(如果 ES2015 可行)或為此使用閉包。此外,您可能不應該i像以前那樣在循環內部進行修改,這樣您就不需要考慮無限循環的情況。更好的循環是:
const a = $('a');
for (let i = 0; i < a.length; i++) {
a[i].on('click', function () {
$('#music').attr('src', sources[i % sources.length]);
$('#music').get(0).play();
})
};
添加回答
舉報