2012-02-20 57 views
1

我需要获取点击的超链接的父div。在下面的例子中,这将是'.link-container'。但是,this.parentthis.parents不起作用。在jQuery中获取HREF的父DIV

jQuery('.link-container a').live('click', function(e) { 
e.preventDefault(); 
alert(this.parent); 
}); 

关于如何得到这个的任何想法?

问候, 约翰

回答

3

你使用它错了。您必须将this包装在jQ对象中。和家长是一个函数,所以你必须把它作为parent()

$('.link-container a').on('click', function(e) { 
    e.preventDefault(); 
    alert($(this).parent()); 
}); 
+0

Thx稍微修改了代码进行回复。我略微修改了你的代码来获得类:'alert($(this).parent()。attr('class'));'。它为我工作。 – John 2012-02-20 06:54:26

+0

哦,是的,哈哈'警报($(this).parent())'会警告一个对象。 – elclanrs 2012-02-20 06:55:53

0

.live已过时,使用.on如果你正在使用jQuery版本1.7+或者使用.delegate,在包裹this jQuery的对象,然后使用jQuery的方法parentparents

jQuery(document).delegate('.link-container a','click', function(e) { 
e.preventDefault(); 
alert($(this).parents('.link-container')); 
}); 

如果锚标记为.lin-container

<div class='link-container'> 
<a href='#'>stack overflow</a> 
</div> 

里面,你可以使用closest

jQuery(document).delegate('.link-container a','click', function(e) { 
    e.preventDefault(); 
    alert($(this).closest('.link-container')); 
    }); 
+0

Thx为'.live'上的单挑。然而,'.on'从来没有为我工作过。我会在这方面开始另一篇文章。对于这一个,我有锚标记里面的div和需要获得相同的类。所以,我通过elclanrs – John 2012-02-20 08:12:07

0

约翰,使用原始的JavaScript性能this.parentNode或jQuery的方法$(this).parent()返回只包含一个节点(父节点的集合的jQuery对象。)

0

希望这有助于

假设你有一个父DIV

<div id="parent"> 
    <a href="javascript:void(0)" class="link">Click me</a> 
</div> 

$(document).ready(function(){ 
    $(".link").click(function(){ 
    alert(this.parentNode.id); 
    }); 
}); 

我通常比父母更喜欢parentNode