2013-09-28 1 views
0

Am используя аккордеон, в котором функция нажмите сделана для grand child, щелкая он должен добавить class к его grand parentПолучить великих родителей HTML элемента с помощью JQuery .parentsUntil() или родителя()

я знаю метод parent() используется для указания parent.and еще не ясен с parentsUntil(), то как добраться до великого родителя ??

мой fiddle

там, щелкая '.accordion > .head > h1 > span.httpmethod > a.trigger' класс .active должен добавить к его большому родителю .accordion чека, что возиться и дать мне некоторые идеи. если вопросы повторяются, значит, извините.

ответ

1

Я думаю, что вам нужно .closest()

$('.accordion a.trigger').click(function(){ 
    $(this).closest('.accordion').toggleClass('active'); 
}) 

Demo:.. Fiddle

+0

Спасибо это работает .. :) –

0

Вы можете использовать $ ("Селектор") родителя() родителя(). Только проблема в том, что при изменении структуры dom вы должны изменить количество .parent(), которое вы используете тоже.

0

Я предпочитаю использовать фильтр eq (http://api.jquery.com/eq/) для фильтрации третьего родителя от выбранного целевого элемента. Проверьте этот фрагмент!

<html> 
<head> 
    <script type="text/javascript"> 
     $(".trigger").bind("click", function(event) { 
      var el = $(event.currentTarget); 
      var parent = el.parents().eq(3); 
      parent.toggleClass("active", true); 
     }); 
    </script> 
</head> 
<body> 
    <div class="accordion"> 
     <div class="head"> 
      <h1> 
       <span class="httpmethod"> 
        <a class="trigger">Link 1</a> 
       </span> 
      </h1> 
     </div> 
    </div> 
    <div class="accordion"> 
     <div class="head"> 
      <h1> 
       <span class="httpmethod"> 
        <a class="trigger">Link 2</a> 
       </span> 
      </h1> 
     </div> 
    </div> 
    <div class="accordion"> 
     <div class="head"> 
      <h1> 
       <span class="httpmethod"> 
        <a class="trigger">Link 3</a> 
       </span> 
      </h1> 
     </div> 
    </div> 
</body> 

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