2013-05-21 141 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