2013-05-28 4 views
-2

Я хочу получить идентификатор родительского DIV для определенного идентификатора.Получение идентификатора родителя DIV

Это HTML: -

<div id="sample-name" class="wrapper-dropdown-5" tabindex="2"> 
    <div class="m2">Heading</div> 
     <ul class="dropdown"> 
      <div class="menu-border"> 
        <li class="orange"> 
         <a href="#2" data-jumpslide="2" data-goto="diagnostics"> 
         ... 
        ... 

<a> ссылка, которая щелкнуло, и когда она нажата, мне нужен идентификатор (образец-имя) для родительского DIV.

Это то, что я сделал в функции мыши на <a>: -

$(this).parents('div:eq(0)').attr('id').split(' '); 

, но это дает мне следующую ошибку: -

Uncaught TypeError: Cannot call method 'split' of undefined

Как вы думаете, есть ли другой способ или может быть может, я могу это улучшить?

Спасибо.

+7

У вас есть повторяющиеся коды здесь: образец-имя. Действительно плохая идея! –

+0

Чтобы добавить комментарий @ roasted в соответствии со спецификацией HTML, элемент ID ограничен уникальным для всего документа. Кроме того, расщепление по пространству довольно неточно, идентификатор не может содержать пробела в первую очередь. –

+0

Какова цель разделения? Каково конечное значение возврата, которое вы хотите от этого? –

ответ

1

Почему бы не использовать класс ()на вашем примере) на родительский div, который вы ищете? Что-то вроде этого:

var parentId = $(this).parents('div.wrapper-dropdown-5').prop('id') ; 
+0

Имеет смысл, я думаю, я принимал более сложный подход. – Steve

4

Проще говоря:

$(this).parents("div").filter(function(i) { return $(this).prop("id"); }).first().prop("id") 
  • .parents()
    • Calls все родители выбранного элемента
  • .filter()
    • уменьшает набор соответствующих элементов для них метод, проходящих внутри
  • .first()
    • Выбирает первый в наборе спичечных элементов
  • .prop()
    • выбирает "Свойства" элемента
+0

Ты хороший, сэр! – Steve

+1

@Faisal lol, я знаю. :-P – SpYk3HH

1

Мое предложение было бы использовать closest

$(this).closest('[id]').attr('id'); 

возвращение идентификатор ближайшего родителя с идентификатором

Quicky demo

EDIT: после рассмотрения его дальнейшего , Я пришел к выводу, что было бы лучше использовать .parents('[id]') вместо closest. closest содержит активный элемент, и вряд ли вы захотите его включить.

+0

Это тоже работает! :) Благодаря. – Steve

+0

Не знаю, какую версию jquery он использует. это не будет работать в старых версиях – SpYk3HH

+0

@ SpYk3HH Я просто использую новейшие версии. Если есть конкретное требование к версии, следует отметить в вопросе. –

1

другой Подход:

$(this).parents("div.m2").attr("id"); 

или

$(this).parents("ul").parent("div").attr("id"); 
+0

Спасибо, класс для каждого меню меняется, поэтому этого будет недостаточно. Ближайшее решение в этом смысле было бы тем, что указал Икар. Благодарю. – Steve

+0

Если у вас всегда одинаковая структура, я думаю, что мой второй пример может работать независимо от класса меню –

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