将文章中的每个图像都用“;href"父链接标题的
Wrap every image in a article with the "href" of parent link title
我有这个代码:
<ul>
<li>
<h3><a class="title" href="page1.html">Post Title</a></h3>
<ul>
<li>
<img src="imageOne.png" alt="" />
<p>Some text.</p>
</li>
</ul>
</li>
<li>
<h3><a class="title" href="page2.html">Post Title</a></h3>
<ul>
<li>
<img src="imageTwo.png" alt="" />
<p>Some text.</p>
</li>
</ul>
</li>
<!-- [...] -->
</ul>
我想在JS/jQuery中做的是:用a.title
的相同href
属性的链接包装所有图像。
我在jQuery中编码了这样的东西,但得到的结果只是第一个a.title
:的href
$("ul li ul li img").each(function() {
$(this).wrap("<a href='" + $("ul li a.title").attr("href") + "'> </a>");
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<ul>
<li>
<h3><a class="title" href="page1.html">Post Title</a></h3>
<ul>
<li>
<img src="imageOne.png" alt="" />
<p>Some text.</p>
</li>
</ul>
</li>
<li>
<h3><a class="title" href="page2.html">Post Title</a></h3>
<ul>
<li>
<img src="imageTwo.png" alt="" />
<p>Some text.</p>
</li>
</ul>
</li>
<!-- [...] -->
</ul>
这应该有效(如果您修复了HTML†)。
$("ul li ul li img").each(function(){
$(this).wrap("<a href='"+ $(this).closest("li:has(h3)").find('a.title').attr("href") + "'> </a>");
});
(也可以使用li:has(a.title)
而不是li:has(h3)
…)
如果你的标记是这样固定的,你也可以用检索值
$(this).parents('li').find('a.title').attr('href')
†:
a
元素需要一个结束标记- 第二个
a
元素需要title
类
当您在jQuery中使用attr或prop访问属性或属性时,它只会给您选择器结果中第一个元素的值。在您的情况下,选择器会抓取页面上的所有"ul-lia.title",因此抓取的属性仅来自第一个。
您想要的是最接近的"ul-lia.title",为了实现这一点,您可以使用"最接近"的jQuery函数:
$("ul li ul li img").each(function(){
var closestHref = $(this).closest('a.title').attr('href');
$(this).wrap("<a href='"+ closestHref + "'> </a>");
});
编辑:根据Felix下面的评论,.closest()只搜索祖先。请看他的答案,找出正确的选择。
<h3><a href="page.html">Post Title</h3>
你忘记关闭锚标签
应该是
<h3><a href="page.html">Post Title</a></h3>
看这里,它有效http://jsfiddle.net/xu6MX/
$("ul li").each(function(){
$("ul li img",this).wrap("<a href='"+ $("h3 a.title",this).attr("href") + "'> </a>");
});
我更新了HTML(我刚刚在第一级添加了类"article"并关闭了标记"a")
<ul>
<li class="article">
<h3><a class="title" href="page1.html">Post Title 1</a></h3>
<ul>
<li>
<img src="image.png" alt=""/>
<p>Some text 1</p>
</li>
</ul>
</li>
<li class="article">
<h3><a class="title" href="page2.html">Post Title 2</a></h3>
<ul>
<li>
<img src="image.png" alt=""/>
<p>Some text 2</p>
</li>
</ul>
</li>
这里是JS
$(document).ready(function() {
$(".article").each(function(){
var img = $(this).find('img');
var title = $(this).find('.title');
img.wrap("<a href='"+ title.attr("href") + "'></a>");
});
});
注意:对于这种东西,不要忘记说明"文档就绪"
相关文章:
- 检测电话窃听,即:<a href="电话:xxx">在UIWebview上
- 如何提取“;href"最近列表项中的属性值
- CKEditor如何允许href="javascript:void(0)"在小部件中
- 如何使用Javascript获取当前页面URL,并在<a href="[the_URL]”>
- JSP<a href="">无法保存常规语句
- Linkify/Clickable Text URL,但忽略那些已经包装在“;a href"'s
- 阻止href="#"链接更改URL哈希
- a href="上的javascript对象对象;javascript:"呼叫
- "href"JavaScript Android中的链接不起作用
- 菜单href="#pannel”;不适用于android
- 参考“;href"而不是html中锚点标签中的url
- 更改URL而不使用<a href="">
- 冷融合:空链接href="#"错误
- 如何检查带有href="某事“;与Jquery有一定的类
- 突出显示菜单中具有href="#"“选项”;a“;标签
- jQuery替换所有href=""其中onclick=“;window.location=“;
- <a href="#">最终调用Javascript函数
- 命令“;window.location.href"不适用于HTML(引导框架)
- <a href="javascript:foo(this)">通过Window,我想要标记
- 如何检查电子邮件是否发送成功?(我使用了<a href="mailto).我们可以使用javascrip