最近的跨度上的jquery切换类

时间:2014-03-26 12:20:53

标签: javascript jquery

我试图在单击面板标题时用另一个类替换类:

这目前无效(切换课程) - 任何想法?

jQuery的:

   $('.panel-heading').click(function () {
            if ($(this).closest('span.fa').hasClass('fa-caret-down')) {
                $(this).closest('span.fa').removeClass('fa-caret-down').addClass('fa-caret-right');
            }
            else {
                $(this).closest('span.fa').removeClass('fa-caret-right').addClass('fa-caret-down');
            }

        });

HTML:

  <div class="panel-heading" data-toggle="collapse" data-parent="#accordion" data-target="#collapseOne">
     <h4 class="panel-title">
         Main <span class="fa fa-caret-down fa-lg pull-right"></span>
     </h4>
  </div>

1 个答案:

答案 0 :(得分:5)

根据jQuery文档,我们使用最接近查找元素的外部/上部元素。

http://api.jquery.com/closest/

&#34;对于集合中的每个元素,通过测试元素本身并通过DOM树中的祖先遍历向上来获取与选择器匹配的第一个元素。&# 34;

因此,在您的情况下,跨度位于单击元素内部,因此您需要使用查找而不是最接近。

试试这个。 http://jsfiddle.net/aamir/4RCMc/1/

 $('.panel-heading').click(function () {
     var $span = $(this).find('span.fa');
     if ($span.hasClass('fa-caret-down')) {
         $span.removeClass('fa-caret-down').addClass('fa-caret-right');
     } else {
         $span.removeClass('fa-caret-right').addClass('fa-caret-down');
     }
 });

或尝试http://jsfiddle.net/aamir/4RCMc/3/

 $('.panel-heading').click(function () {
     $(this).find('span.fa').toggleClass( 'fa-caret-down', 'fa-caret-right' );
 });

在此处阅读更多内容:https://coderwall.com/p/wxjljq