2013-05-21 113 views
2

我试图获取父元素的clicked元素的id。我试过在jQuery中获取父元素

$(window).click(function(event) { 
    alert("Clicked on " + event.target.id + ". Its parent is " + $(event.target).parent().attr("id")); 
}); 

如果我有以下结构,它会返回Clicked on x. Its parent is undefined

<div id="y"> 
    <div id="x">X</div> 
</div> 

为什么它不给父母的ID?

我曾尝试以下太

$(this).closest("div").attr("id"); 
$(this).parent().attr('id') 
+1

[Your code](http://jsfiddle.net/cAeRA/)。当我尝试时,给出“它的父母是我”。 –

+3

它适用于我:http://jsfiddle.net/5AM2Y/(如果你点击X以外的地方,它会显示“点击,其父母未定义”) – nnnnnn

+0

我创建了一个小提琴。 http://fiddle.jshell.net/Jg3mX/它工作得很好?你使用的是什么jQuery版本+浏览器? – Yeronimo

回答

-1

不知道为什么,但我的浏览器已保存在JavaScript文件的旧副本,并用它。我在前一个中没有工作代码。原帖中的代码片段正常工作。

1
$(document).on('click', '.clicked-element', function(){ 
    parentElId = $(this).parent().attr('id'); 
    // parentElId = $(this).parents('.custom-parent-class').attr('id'); // if you wan't the id from a different parent 
}); 
+0

无论这是否有效,为什么OP的代码不起作用? (鉴于它对我们有帮助。) – nnnnnn

-1

当我想到:

$(event.target).parent().attr("id"); 
+0

你提供什么改变? – Cherniv

+0

在相同的地方使用event.target和父母,而不是this和not closest()。我认为这很清楚。它正在工作,我不明白-1 –

+0

OP已经在点击处理程序中的代码中执行此操作。 – nnnnnn

0

你()之前的jQuery的功能可能使用

<div class="container"> 
    <h2>Greetings</h2> 
    <div class="inner">Hello</div> 
    <div class="inner">Goodbye</div> 
</div> 

$('.inner').before('<p>Test</p>'); 

输出:

<div class="container"> 
    <h2>Greetings</h2> 
    <div class="inner">Hello</div> 
    <p>Test</p> 
    <div class="inner">Goodbye</div> 
</div> 

下面是详细的链接,该功能http://api.jquery.com/before/

+0

你是否意外地在错误的问题下发布了这个问题? – nnnnnn