[英].attr("href") returning undefined
这是我的 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)
返回未定义,为什么?
$(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,output
但是,我建议您添加一个包含所有这些内容的新容器。 就像是 :
<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>
的父<img>
是围绕它的不起眼的<div>
。 jQuery 然后在那个 div 中查找'.post-title-div'
,没有找到任何东西并返回一个空的选择器对象。 在那个空的选择器中,它然后查找.post-title
并且 - 自然 - 也找不到任何东西。 然后它尝试读取新的也是空的选择器上的属性,这当然不能返回任何有用的东西。
$(this).parent('.post-title-div').find(".post-title")
返回一个[object Object]
的原因是因为 jQuery 选择器从不返回 undefined,它们总是返回另一个选择器,即可以是一个空的选择器。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.