【问题标题】:get href attribute of enclosing link tag获取封闭链接标签的href属性
【发布时间】:2011-07-09 07:49:25
【问题描述】:

这个有点麻烦。我需要一种使用 Jquery/JS 来查找封闭链接标签的 HREF 属性的方法:

<a href="something.html"><img src="img1.jpg" class="active"></a>

我想按类定位 img 并找到第一个前面的 href 属性的值。

$("img.active").somethingAwesome().attr("href");

请给我看一些很棒的东西() ...帮助?

【问题讨论】:

    标签: jquery parent attr


    【解决方案1】:

    .parent() 就是你所需要的!

    $("img.active").parent().attr("href");
    

    Here is the documentation :)

    根据 Kyle 的评论,为了使某些东西尽可能健壮,您可以尝试:

    $("img.active").closest('a[href]').attr("href");
    

    这样,即使你的 html 看起来像这样:

    <a href="something.html">
        <a name="anchor">
            <img src="img1.jpg" class="active">
        </a>
    </a>
    

    你仍然会得到你需要的东西:)

    【讨论】:

    • 如果锚点和图像之间有另一个元素,这将不起作用。应该使用最接近()。
    • 他想要“第一个前面的 href 属性”
    • 是的,好吧,很公平,这是一个完全有效的解释。这个例子是否具有代表性并不是 100% 清楚的。但如果我们假设它不是,那么还有各种其他可能的问题。例如,如果中间有一个&lt;a name=""&gt;&lt;/a&gt; 元素怎么办? .closest('a') 也会失败,.closest('a[href]') 将是必需的!
    • 明白。无意伤害。
    • @simon 我认为一个更常见的锚定图像用例在它和它的祖先之间有一个包含块是&lt;a&gt;&lt;span&gt;&lt;img /&gt;&lt;/span&gt;&lt;/a&gt;。嵌套锚点会创建语法上无效的上下文。
    【解决方案2】:

    $("img.active").parent("a").attr("href") 将获得直接父级的 href 属性,假设它是一个锚点。如果图像和锚点之间有任何深度的包含块,请改用$("img.active").closest("a").attr("href")

    【讨论】:

    • +1 用于使用最近的而不是父级。这使得重构更安全,并且性能没有差异。
    • 太棒了!谢谢。这样的菜鸟问题。认为这会很容易。好旧的 Jquery。
    • 作为一个附带问题,最接近的搜索是否向上或向下文档。如果它同时上下检查最接近的,那么最接近的就太不可预测了。
    • @3Dom .closest 向上搜索祖先。如果你想找到后代,你会想去.find()
    • 感谢 bodeaux 对像我这样的菜鸟很有帮助。请尽情享受成为我班上最聪明的人的荣耀。我今天的理论:问得好问题就回答了一半。
    【解决方案3】:

    $("img.active").closest("a").attr("href");

    【讨论】:

      【解决方案4】:
      $("img.active").closest('a').attr("href");
      

      【讨论】:

      • 如果我有多个示例代码实例,而其中只有两个有锚点怎么办?我想查看标签是否包含在 HREF 标签中。
      • parent() 是我为此目的遇到的最好的东西,但是你所有的 cmets 都对我帮助很大
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-09-29
      • 1970-01-01
      • 2013-10-30
      • 2016-02-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多