我需要点击超链接的父div。在下面的示例中,这将是'.link-container'
。但是,this.parent
或this.parents
不起作用。
jQuery('.link-container a').live('click', function(e) {
e.preventDefault();
alert(this.parent);
});
关于如何获得这个的任何想法?。
此致 约翰
答案 0 :(得分:3)
你错了。您必须将this
包装在jQ对象中。父是一个函数,因此您必须将其称为parent()
:
$('.link-container a').on('click', function(e) {
e.preventDefault();
alert($(this).parent());
});
答案 1 :(得分:0)
答案 2 :(得分:0)
.live
,如果您使用的是jquery版本1.7+,则使用.on
,或者使用.delegate
,在jquery对象中包装this
然后使用jquery方法parent
或parents
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'));
});
答案 3 :(得分:0)
John,使用原始javascript属性this.parentNode
或jQuery方法$(this).parent()
,它返回一个jQuery对象,该对象只包含一个节点(父节点)的集合。
答案 4 :(得分: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而不是父