javascript - 如何使用 jQuery 遍历 div、抓取 href 和包装不同的元素?
问题描述
我对 jQuery 很陌生,到目前为止只能进行基本的 CSS 编辑。我无权访问源代码,但我需要使用类“.card”遍历每个 div,获取超链接的 href 并将链接应用于每个相应的图像,以便用户可以单击图像以除了文字。
我尝试了以下方法,但产生了意想不到的后果:
- 已成功为每张图片添加超链接,但每次都应用了多次
- 超链接的值是“未定义”
$(function() {
$(".card-img").each(function() { // For each card
var a = $(this).next('a'); // Find its associated anchor
$(".card-img").wrap('<a href="' + a.attr('href') + '"></a>'); // And wrap the card image
});
});
谁能告诉我如何做到这一点?
<div class="g-c g-c--md4">
<div class="card ">
<div class="card-img">
<img src="webinar-1.png">
</div>
<div class="card-content">
<div class="card-copy">
<p>Webinar 1</p>
</div>
<a class="cta card-cta" href="https://www.webinar1url.com">Watch Webinar</a>
</div>
</div>
</div>
<div class="g-c g-c--md4">
<div class="card ">
<div class="card-img">
<img src="webinar-2.png">
</div>
<div class="card-content">
<div class="card-copy">
<p>Webinar 2</p>
</div>
<a class="cta card-cta" href="https://www.webinar2url.com">Watch Webinar</a>
</div>
</div>
</div>
<div class="g-c g-c--md4">
<div class="card ">
<div class="card-img">
<img src="webinar-3.png">
</div>
<div class="card-content">
<div class="card-copy">
<p>Webinar 3</p>
</div>
<a class="cta card-cta" href="https://www.webinar3url.com">Watch Webinar</a>
</div>
</div>
</div>
<div class="g-c g-c--md4">
<div class="card ">
<div class="card-img">
<img src="webinar-4.png">
</div>
<div class="card-content">
<div class="card-copy">
<p>Webinar 4</p>
</div>
<a class="cta card-cta" href="https://www.webinar4url.com">Watch Webinar</a>
</div>
</div>
</div>
解决方案
使用循环遍历每个.card
div .each()
,然后使用$(this)
引用卡片 div。在循环.find()
中,既可以抓取href
也可以.wrap()
用 包裹图像href
:
$('.card').each(function() {
var href = $(this).find('a').attr('href');
$(this).find('img').wrap(`<a href="${href}"></a>`)
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="g-c g-c--md4">
<div class="card ">
<div class="card-img">
<img src="webinar-1.png">
</div>
<div class="card-content">
<div class="card-copy">
<p>Webinar 1</p>
</div>
<a class="cta card-cta" href="https://www.webinar1url.com">Watch Webinar</a>
</div>
</div>
</div>
<div class="g-c g-c--md4">
<div class="card ">
<div class="card-img">
<img src="webinar-2.png">
</div>
<div class="card-content">
<div class="card-copy">
<p>Webinar 2</p>
</div>
<a class="cta card-cta" href="https://www.webinar2url.com">Watch Webinar</a>
</div>
</div>
</div>
<div class="g-c g-c--md4">
<div class="card ">
<div class="card-img">
<img src="webinar-3.png">
</div>
<div class="card-content">
<div class="card-copy">
<p>Webinar 3</p>
</div>
<a class="cta card-cta" href="https://www.webinar3url.com">Watch Webinar</a>
</div>
</div>
</div>
<div class="g-c g-c--md4">
<div class="card ">
<div class="card-img">
<img src="webinar-4.png">
</div>
<div class="card-content">
<div class="card-copy">
<p>Webinar 4</p>
</div>
<a class="cta card-cta" href="https://www.webinar4url.com">Watch Webinar</a>
</div>
</div>
</div>
推荐阅读
- c - 如何提高生成 32 位随机素数的速度?
- java - 将 Tomcat 版本从 apache-tomcat-7.0.94 升级到 apache-tomcat-7.0.109 时出错
- typescript - 我们如何定义这个 Mongodb 模式,将相同的代码放入 TypeORM 并使用 Array 而不是 ObjectId?
- database - 你如何使用 redis-benchmark 工具来填满一个 redis 集群内存?
- javascript - 如何有条件地向一个类型添加多个值?
- nuxt.js - 如果没有缓存,则重定向到离线页面并使用 @nuxtjs/pwa 从离线页面重定向到主页
- html - 响应式移动设计html
- angular - 如何使用其他现有的角度组件在 Angular js 中添加网格
- wix - 使用 wix bundle 部署外部负载
- sql - DISTINCT 函数在我的 SQL 查询中不起作用