有许多图片具有相同的网址源,但第一张图片只有Alt标记,那么如何将alt添加到具有相同来源的其他图片?
$(function(){
var srcs = [],
alt = '',
title = '',
temp;
$("img").filter(function(){
temp = $(this).attr("src");
alt = $(this).attr("alt");
title += $(this).attr("title");
if($.inArray(temp, srcs) < 0){
srcs.push(temp);
srcs.push(alt);
srcs.push(title);
return false;
}
return true;
}).attr('alt',alt);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<div class="colourDots">
<img alt="aaa" title="axxx" src="/out/pictures/generated/product/8/300_450_100/60028.bl.jpg"/><br>
<img src="/out/pictures/generated/product/8/300_450_100/60028.bl.jpg"/><br>
<img alt="bbb" title="axxx" src="/out/pictures/generated/product/8/300_450_100/60028.bl.jpg"/><br>
<img src="/out/pictures/generated/product/8/300_450_100/60028.sw.jpg"/><br>
<img src="/out/pictures/generated/product/8/300_450_100/60028.bl.jpg"/><br>
<img src="/out/pictures/generated/product/8/300_450_100/60028.bl.jpg"/><br>
<img src="/out/pictures/generated/product/8/300_450_100/60028.bl.jpg"/><br>
</div>
我只需要过滤图像
所有具有相同源网址的图片。
将alt标记复制到其他没有alt但具有相同源URL的图像
答案 0 :(得分:2)
alt
的成员,然后将其分配到整个集合。在代码中:
const uniques = [];
const imgs = $('img');
imgs.each(function () {
let src = this.src;
if (uniques.indexOf(src) === -1) uniques.push(src);
});
uniques.forEach(src => {
let srcd = imgs.filter("img[src='"+src+"']");
let alt = srcd.filter('[alt]').first().attr('alt');
srcd.each( function() {
$(this).attr('alt',alt);
})
});
答案 1 :(得分:0)
第一个版本(带注释)仅将alt
的第一个实例的值分配给所有图像:
$(function () {
// Get value of first instance of 'alt' for images within elements of the given class
var alt = $(".colourDots img[alt]").first().attr("alt");
// If value of 'alt' is not null or undefined
// (Note, use != and not !== for this test)
if (alt != null) {
// Iterate images within elements of class .colourDots
$.each($(".colourDots img"), function () {
// assign value of var alt to each image
$(this).attr("alt", alt);
});
}
});
,第二个版本将元素的alt
值分配给后续图像(因此,您的问题中的alt="bbb"
将被选中并分配给后续图像):
$(function () {
// Define a holding variable
var alt;
// Iterate images
$.each($(".colourDots img"), function () {
// If element has 'alt', assign the value to var alt
if ($(this).attr("alt") != null) {
alt = $(this).attr("alt");
}
// otherwise assign the value of var alt to the image
else {
$(this).attr("alt", alt);
}
});
});
您可以根据自己的具体需求选择。