2014-10-06 93 views
0

我有一个手风琴用于FAQ页面。点击某个特定问题时,节箭头需要从右向下改变。所有其他人都需要默认回到正确的位置。我错过了什么让这个工作?如何在点击var ID时添加/删除类元素?

  <dd id="1" class="accordion-navigation"> 
       <i class="fa fa-chevron-right"></i> <a class="faq-toggle" href="#faq1">How can I plan my Wedding at Mayan Resorts?</a> 
       <div id="faq1" class="content"> 
        Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. 
       </div> 
      </dd> 

      <dd id="2" class="accordion-navigation"> 
       <i class="fa fa-chevron-right"></i> <a class="faq-toggle" href="#faq2">Do you offer a service to plan the event start to finish?</a> 
       <div id="faq2" class="content"> 
        Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. 
       </div> 
      </dd> 



$('.accordion-navigation').click(function() { 
     var id = $(this).attr('id'); 

       if ($(id).hasClass('active')) { 
         $(id).find('i').removeClass('fa-chevron-right'); 
         $(id).find('i').addClass('fa-chevron-down'); 
       } 
       else if (!($('.accordion-navigation').hasClass('active'))) { 
         $('.accordion-navigation').find('i').addClass('fa-chevron-right'); 
         $('.accordion-navigation').find('i').removeClass('fa-chevron-down'); 
       } 
}); 

回答

0

不知道到底为什么它不工作,但我打定自己的解决方案 - CSS和JS组合

http://jsfiddle.net/95rzLepo/

$(document).on('click', '.faq-toggle' ,function (e) { 
    if($(this).prev().hasClass('fa-chevron-down')) { 
     $(this).prev().removeClass('fa-chevron-down'); 
     $(this).prev().addClass('fa-chevron-right'); 
    } else { 
     $(this).parents('body').find('.fa.fa-chevron-down').each(function (e) { 
      $(this).removeClass('fa-chevron-down'); 
      $(this).addClass('fa-chevron-right'); 
     }); 

     $(this).prev().removeClass('fa-chevron-right'); 
     $(this).prev().addClass('fa-chevron-down'); 
    } 
}); 
+0

完美地工作。谢谢! – 2014-10-06 20:45:00

1

使用的thistoggleClass您的实例,你应该能够做到这一点在短短的几行:

$('.accordion-navigation').click(function() { 
    //Remove from all 
    $('.accordion-navigation i').removeClass("fa-chevron-down").addClass("fa-chevron-right");  

    //Add to current 
    $("i", this).toggleClass("fa-chevron-right fa-chevron-down"); 
}); 
+0

BTW:如果页面上有多个手风琴'dl',他必须使用'.closest('dd').siblings()。find('i.fa')'或类似的东西来隔离它。 – Blazemonger 2014-10-06 20:25:42

+0

添加到当前不起作用。 fa-chevron-down在页面上不存在以便切换。它需要替换那里的fa-chevon权利。 – 2014-10-06 20:26:49

+0

在这种情况下只有一个DL。 – 2014-10-06 20:27:12