Javascript 在一篇文章中用“";href";父链接标题的定义

Javascript 在一篇文章中用“";href";父链接标题的定义,javascript,jquery,html,Javascript,Jquery,Html,我有以下代码: 一些文本 一些文本 这应该是可行的(如果您修复了HTML†) †: a元素需要一个结束标记 第二个a元素需要title类 当您在jQuery中使用attr或prop访问属性或属性时,它只提供选择器结果中第一个元素的值。在您的例子中,选择器将获取页面上的所有“ul li a.title”,因此获取的属性仅来自第一个 您需要的是最接近的“ul li a.title”,要实现这一点,您可以使用“最接近的”jQuery函数: $("ul li ul li

我有以下代码:

    • 一些文本

    • 一些文本

这应该是可行的(如果您修复了HTML†)


†:

  • a
    元素需要一个结束标记
  • 第二个
    a
    元素需要
    title

当您在jQuery中使用attr或prop访问属性或属性时,它只提供选择器结果中第一个元素的值。在您的例子中,选择器将获取页面上的所有“ul li a.title”,因此获取的属性仅来自第一个

您需要的是最接近的“ul li a.title”,要实现这一点,您可以使用“最接近的”jQuery函数:

$("ul li ul li img").each(function(){
    var closestHref = $(this).closest('a.title').attr('href');
    $(this).wrap("<a href='"+ closestHref + "'> </a>");
});
$(“ul li ul li img”)。每个(函数(){
var closestHref=$(this).closest('a.title').attr('href');
$(this.wrap(“”);
});
编辑:根据下面的Felix注释,.closest()仅搜索祖先。有关正确的选择器,请参见他的答案。


<h3><a href="page.html">Post Title</h3>
看这里,它起作用了
$(“ul li”)。每个(函数(){
$(“ul li img”,this).wrap(“”);
});
我更新了HTML(我刚刚在第一级添加了类“article”并关闭了标记“a”)

    • 一些文本1

    • 一些文本2

这里是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>");
    });
});
$(文档).ready(函数(){
$(“.article”)。每个(函数(){
var img=$(this.find('img');
var title=$(this.find('.title');
包装符号(“”);
});
});

注意:对于这类内容,请不要忘记说明“文档准备就绪”

。最接近的搜索者仅限于搜索者
a.title
不是图像的祖先。@Felix,啊,好主意。我在你的回答中看到了你是如何解决这个问题的。我会留下我的答案,让我解释为什么他最初的解决方案不起作用,但给你的答案a+1,让它上升到顶部。非常感谢!最近的声明似乎真的很聪明!不幸的是,我不能/修复代码…但是你的第二行代码工作-完美-我从你的答案中学到了一些有趣的东西!我真丢脸!!!我还可以使用一些占位符图像(例如lorepixum)。。。谢谢你的提示!
<h3><a href="page.html">Post Title</h3>
<h3><a href="page.html">Post Title</a></h3>
$("ul li").each(function(){
    $("ul li img",this).wrap("<a href='"+ $("h3 a.title",this).attr("href") + "'> </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>
$(document).ready(function() {

    $(".article").each(function(){
        var img = $(this).find('img');
        var title = $(this).find('.title');
        img.wrap("<a href='"+ title.attr("href") + "'></a>");
    });
});