jquery - img src 等于父 div 的兄弟 img src
问题描述
.thumb-img
的src
应该等于最接近.slider-img
的src
$(function imgsrc() {
var thumbimg = $('.thumb-img')
.closest('div')
.prev()
.attr('src');
$('.thumb-img').attr('src', thumbimg)
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div>
<img class="slider-img" data-u="image" src="https://cdn-images-1.medium.com/max/1200/1*H-25KB7EbSHjv70HXrdl6w.png" />
<div data-u="thumb">
<img class="thumb-img" data-u="thumb" src="" />
<div class="ti">Slide Description</div>
</div>
</div>
解决方案
我认为你有多个这样的 img 标签,在这种情况下它不会像你预期的那样工作,因为变量thumbimg
总是第一个 img 标签值。
因为$('.thumb-img').closest('div').prev()
将是 img 标记的集合,并且.attr('src')
始终返回集合中的属性第一个元素。
获取匹配元素集中第一个元素的属性值,或为每个匹配元素设置一个或多个属性。
为了解决这个问题,您必须遍历元素,然后对每个元素单独执行相同的操作。所以使用each()
方法来实现这一点。
$(function imgsrc() {
$('.thumb-img').each(function() {
$(this).attr('src', $(this).closest('div')
.prev()
.attr('src'));
})
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div>
<img class="slider-img" data-u="image" src="https://cdn-images-1.medium.com/max/1200/1*H-25KB7EbSHjv70HXrdl6w.png" />
<div data-u="thumb">
<img class="thumb-img" data-u="thumb" src="" />
<div class="ti">Slide Description</div>
</div>
</div>
或者您可以使用
attr()
带有回调(内部迭代)作为第二个参数的方法,在回调中获取src
父兄弟元素的属性(this
指当前元素)。
$(function imgsrc() {
$('.thumb-img').attr('src', function() {
return $(this).closest('div')
.prev()
.attr('src');
})
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div>
<img class="slider-img" data-u="image" src="https://cdn-images-1.medium.com/max/1200/1*H-25KB7EbSHjv70HXrdl6w.png" />
<div data-u="thumb">
<img class="thumb-img" data-u="thumb" src="" />
<div class="ti">Slide Description</div>
</div>
</div>
更新:我刚刚检查了你的网站(如评论),结构完全不同,所以你必须改变一些东西。获取包含带有slider-img
类的 img 标签的祖先 div,然后获取 img 标签及其 src 属性值。
$(function imgsrc() {
$('.thumb-img').attr('src', function() {
return $(this).closest('div:has(.slider-img)')
.find('.slider-img')
.attr('src');
})
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div>
<img class="slider-img" data-u="image" src="https://cdn-images-1.medium.com/max/1200/1*H-25KB7EbSHjv70HXrdl6w.png" />
<div data-u="thumb">
<img class="thumb-img" data-u="thumb" src="" />
<div class="ti">Slide Description</div>
</div>
</div>
推荐阅读
- java - Java-Swing:检索和更新数据库中的详细信息
- java - 我将如何用 Java 编写这个 C++ 输入函数?
- python - 数据帧模式功能
- java - 试图将嵌套的 for 循环表示为 Java 流,但感到困惑
- javascript - 如何更改对象中的布尔值?
- ruby-on-rails - Rails 应用程序在部署到 Azure 时崩溃
- javascript - 如何根据导入组件的页面更改 GatsbyJS 组件内的元素的背景颜色?
- java - 在 Swift 中解密 Java RSA/ECB/PKCS1Padding 加密字符串时出现问题
- flutter - Flutter 将 IconButton 内容与父边界对齐
- flutter - 颤振:输入“未来”
' 不是 'Widget' 类型的子类型 // MaterialPageRoute (无效的))