切换img src文件路径



我有以下代码:

<div class="flex-gametypes">
<div><img src="assets/images/game/one.png"></div>
<div><img src="assets/images/game/two.png"></div>
</div>

我有以下图像文件:

assets/images/game/one.png
assets/images/game/two.png
assets/images/game/one-highlight.png
assets/images/game/two-highlight.png

我想做的事:

当我点击one.png时,代码必须将文件重命名为one-hight.png.

当我再次点击它(one.png(时,它应该继续是one-hight.png.

但如果我点击two.png,那么一个highlight.png应该会恢复为one.png,two.png现在应该是two-hight.png

所以,这就是我尝试过的:(我从这个问题中得到了一些帮助(。

$(document).ready(function(){
$(".flex-gametypes img").click(function(){
$(this).attr('src', $(this).attr('src').replace('-hightlight.png') + '');
$(this).attr('src', $(this).attr('src').replace(/.png/, '') + '-highlight.png');
});
});

但这并没有显示出想要的结果。那么我怎样才能达到这种效果呢?

在我的示例中,我使用了indexOf()。现在它按照你想要的方式工作。通过拨动原理。

$(".flex-gametypes img").each(function() {
$(this).click(function() {
if ($(this).attr('src').indexOf('-highlight.png') != -1) {
$(this).attr('src', $(this).attr('src').replace(/-highlight.png/, '') + '.png') 
} else {
$(this).attr('src', $(this).attr('src').replace(/.png/, '') + '-highlight.png')
}
});
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="flex-gametypes">
<div><img src="assets/images/game/one.png"></div>
<div><img src="assets/images/game/two.png"></div>
<div><img src="assets/images/game/one-highlight.png"></div>
<div><img src="assets/images/game/two-highlight.png"></div>
</div>

试试这个

$(document).ready(function(){
$(".flex-gametypes div img").click(function(){
$(".flex-gametypes div img").each(function(){
$(this).attr('src', $(this).attr('src').replace('-highlight', ''));
});
$(this).attr('src', $(this).attr('src').replace(/.png/, '') + '-highlight.png');

});
});

当一个图像被点击时,函数会从每个图像中删除每个高光,然后只在被点击的图像中添加高光。

我希望这对你有用。

尝试用以下内容替换jQuery:

$(document).ready(function(){
$(".flex-gametypes img").click(function(){
$(".flex-gametypes img").each(function(){
$(this).attr('src', $(this).attr('src').replace('-highlight.png', '.png'));
});
$(this).attr('src', $(this).attr('src').replace('.png', '-highlight.png'));

});
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="flex-gametypes">
<div><img src="assets/images/game/one.png"></div>
<div><img src="assets/images/game/two.png"></div>
</div>

我刚刚修复了一个拼写错误,并更改了替换代码。希望这能有所帮助!

首先,它会将所有突出显示的图像更改为正常,然后突出显示单击的当前图像,希望这有助于

$(document).ready(function() {
$(".flex-gametypes img").on('click',function() {
$(".flex-gametypes img").each(function(i,obj){
$(obj).attr('src', $(obj).attr('src').replace('-highlight.png', '.png'));
})
$(this).attr('src', $(this).attr('src').replace('.png', '-highlight.png'));
});});

最新更新