.attr("href")返回未定义

.attr("href") returning undefined

本文关键字:quot 返回 未定义 href attr      更新时间:2023-09-26

这是我的HTML 的简化版本

<div class="post-title-div">
    <a href="link" class="post-title">Link</a>
</div>
<div></div>
<div>
    <img class="eye-icon" src="link.jpg"/>
</div>

JavaScript:

  $(".eye-icon").click(function(){
    var link = $(this).parent('.post-title-div').find(".post-title").attr("href");
  })

alert(link)返回undefined,为什么?

$(this).parent('.post-title-div').find(".post-title")自身返回[object Object]

Parent/Parents/Closest不是您想要的:

 $(".eye-icon").click(function(){
    var link = $(this).parent().prev().prev().find(".post-title").attr("href");
   alert(link)
  })

你在那里没有共同的父母。

http://jsbin.com/tupeta/edit?html,js,输出

但是,我建议您添加一个新的容器,该容器将包含所有内容。类似于:

<div class='wrapper'> 
 <div class="post-title-div">
    <a href="link" class="post-title">Link</a>
</div>
<div></div>
<div>
    <img class="eye-icon" src="link.jpg"/>
</div>
</div> 

所以现在你可以做:

 $(".eye-icon").click(function(){
    var link = $(this).closest('.wrapper').find(".post-title").attr("href");
   alert(link)
  })

<img>的父级是围绕它的非脚本<div>。jQuery随后在该div中查找'.post-title-div',但没有找到任何内容,并返回一个空选择器对象。在这个空选择器中,它会查找.post-title,当然也找不到任何内容。然后,它尝试读取新的(也是空的(选择器上的一个属性,当然该选择器不能返回任何有用的内容。

$(this).parent('.post-title-div').find(".post-title")返回[object Object]的原因是因为jQuery选择器从不返回未定义的,它们总是返回另一个选择器,该选择器可以是空选择器。