2013-05-21 3 views
2

Я попытался получить идентификатор родительского элемента щелкнутого элемента. Я попробовал этотПолучение родительского элемента в 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> 

Почему он не дает идентификатор родителя?

Я попытался следующие слишком

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

[Ваш код] (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 и parent в одном и том же месте, а не это и не ближе(). Я подумал, что это понятно. Он работает, и я не понимаю с -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

Смежные вопросы