3 回答

TA貢獻1799條經驗 獲得超8個贊
嘗試這個
<div>
<a href="#" data-f="2134.png" class="link link--file">filename1.png</a>
<a href="#" data-f="432543.png" class="link link--file">filename2.png</a>
<a href="#" data-f="345.pdf" class="link link--file">filename2.pdf</a>
<a href="#" data-f="54445.jpg" class="link link--file">filename1.jpg</a>
</div>
<script>
var link = document.getElementsByClassName('link');
for(let el of link )
{
console.log(el.innerHTML.split('.')[1]);
}
</script>

TA貢獻1963條經驗 獲得超6個贊
問題是因為您附加到所有.link--file元素。相反,您需要附加到循環迭代中的特定一個。
此外,您應該使用each()循環遍歷 jQuery 對象中的一組元素,而不是map(). 后者旨在用于從集合構建數組。
最后,您可以通過使用一個對象來存儲您要使用的圖標類名,從而使圖標查找邏輯更具可擴展性。
let iconLookup = {
png: 'fa-circle',
pdf: 'fa-square-o',
jpg: 'fa-circle-o'
}
jQuery($ => {
$('.link--file').each((i, el) => {
let $link = $(el);
let ext = $link.data('f').split('.').pop();
if (iconLookup.hasOwnProperty(ext)) {
$link.append(`<i class="fa ${iconLookup[ext]}"></i>`);
}
});
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css" integrity="sha384-wvfXpqpZZVQGK6TAh5PVlGOfQNHSoD2xbE+QkPxCAFlNEevoEH3Sl0sibVcOQVnN" crossorigin="anonymous">
<div>
<a href="#" data-f="2134.png" class="link link--file">filename1.png</a>
<a href="#" data-f="432543.png" class="link link--file">filename2.png</a>
<a href="#" data-f="345.pdf" class="link link--file">filename2.pdf</a>
<a href="#" data-f="54445.jpg" class="link link--file">filename1.jpg</a>
</div>

TA貢獻1865條經驗 獲得超7個贊
您可以使用jQuery.each()
?來執行此操作。這樣您就可以通過訪問循環中的當前元素this
。
$('document').ready(function() {
? $('div .link--file').each(function() {
? ? if(this.dataset.f.includes('.png')) {
? ? ?$(this).append('<i class="fa fa-circle"></i>')
? ? }
? });
});
<link rel="stylesheet"/>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div>
? ?<a href="#" data-f="2134.png" class="link link--file">filename1.png</a>
? ?<a href="#" data-f="432543.png" class="link link--file">filename2.png</a>
? ?<a href="#" data-f="345.pdf" class="link link--file">filename2.pdf</a>
? ?<a href="#" data-f="54445.jpg" class="link link--file">filename1.jpg</a>
</div>
添加回答
舉報