2 回答

TA貢獻1806條經(jīng)驗 獲得超8個贊
如果我沒看錯,那么您可以使用$.index()
獲取被單擊元素的源<a>
。
.index()
?/?.index( selector )
?/?.index( object )
描述:從匹配的元素中搜索給定的元素。
返回值
如果沒有參數(shù)傳遞給該.index()
方法,則返回值是一個整數(shù),表示第一個元素在 jQuery 對象中相對于其兄弟元素的位置。如果
.index()
在元素集合上調(diào)用并且傳入 DOM 元素或 jQuery 對象,.index()
則返回一個整數(shù),指示傳遞的元素相對于原始集合的位置。如果選擇器字符串作為參數(shù)傳遞,
.index()
則返回一個整數(shù),指示 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條經(jīng)驗 獲得超3個贊
該i變量已提升,因此您應(yīng)該將其聲明為 let(如果 ES2015 可行)或為此使用閉包。此外,您可能不應(yīng)該i像以前那樣在循環(huán)內(nèi)部進行修改,這樣您就不需要考慮無限循環(huán)的情況。更好的循環(huán)是:
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();
})
};
添加回答
舉報