javascript - 使用JS从多个img src标签中删除一个文件夹
问题描述
我有一个包含许多不同画廊类别的网站,它们显示较小的缩略图尺寸,直到屏幕宽度低于 1200 像素,之后我想显示完整尺寸。
图像显示如下:
<section class="gallery category1">
<img id="cat1img1" src="cat1/small/img-1.jpg" alt="blah">
<img id="cat1img2" src="cat1/small/img-2.jpg" alt="blah">
etc...
</section>
<section class="gallery category2">
<img id="cat2img1" src="cat2/small/img-1.jpg" alt="blah">
<img id="cat2img2" src="cat2/small/img-2.jpg" alt="blah">
etc...
</section>
我想要做的就是使用带有一些 jQuery 的 JS 媒体查询来从每个标签中删除“small/”而不列出每个 img,这样就可以自由地添加和删除它们而无需再次修改代码。
这是我尝试过的,但它没有更改 img url,尽管它确实触发了我的大小更改检查:
function galleryBreak(x) {
if (x.matches) {
$('.gallery').children('img').attr('src').replace('/small','')
console.log('size change check');
};
};
var x=window.matchMedia('(max-width: 1200px)')
galleryBreak(x)
x.addListener(galleryBreak)
解决方案
您有多个 (2) 个画廊和多个图像。您需要遍历所有画廊的所有图像。像这样的东西
function changeImagePaths(theGallery) {
var images = theGallery.querySelectorAll('img');
images.forEach( image => {
console.log('Path before: ', image.src)
image.src = image.src.replace('/small','')
console.log('Path AFTER: ', image.src)
});
};
var x=window.matchMedia('(max-width: 1200px)')
var myGalleries = document.querySelectorAll('.gallery')
myGalleries.forEach( gallery => {
if(x.matches) {
changeImagePaths(gallery)
}
});
<section class="gallery category1">
<img id="img1" src="cat1/small/img-1.jpg" alt="blah">
<img id="img2" src="cat1/small/img-2.jpg" alt="blah">
</section>
<section class="gallery category2">
<img id="img1" src="cat2/small/img-1.jpg" alt="blah">
<img id="img2" src="cat2/small/img-2.jpg" alt="blah">
</section>
现在说了这么多,如果您可以更改 HTML,请使用响应式图像,它将向您显示您需要的所有内容,可以在图像标签中设置,例如:
<img srcset="elva-fairy-320w.jpg,
elva-fairy-480w.jpg 1.5x,
elva-fairy-640w.jpg 2x"
src="elva-fairy-640w.jpg"
alt="Elva dressed as a fairy">
推荐阅读
- reactjs - 功能组件中的 React.memo 和失效不会失效
- java - 优化没有为 Java SDK 代码激活
- python - 如何在 Python tkinter 中获取入口值?
- r - 获取基本地图而不是通过数据指定的地图
- android - 如何使用 Espresso 长按 RecyclerView 中的项目
- c - 在C中为结构的二维数组元素赋值
- python - 如何使用 Kivy 将 TextInput 转换为地图视图的浮点数
- ios - 如何修复不为 iOS 构建的 React Native App
- angular - Angular - 如何通过选择器将事件绑定到 HTML 元素?
- python - 在 Tkinter 中更新文本小部件中的值