2016-07-16 17 views
1

私は自分のカルーセルを使用していますので、キャプションを追加するには、スタックオーバーフローでthis questionをフォローしましたが、うまくいきませんでした。それから、inspect要素を使ってチェックし、カルーセルの現在のイメージに「アクティブ」クラスがないことがわかりました。そこでスクリプトを追加しました。最後に私のスクリプトはこのようになりますフクロウカルーセルの画像にキャプションを追加するには

$(document).ready(function() { 
    $('.owl-carousel').owlCarousel({ 
     loop: true, 
     items: 1, 
     afterAction: function(el) { 
      //remove class active 
      this 
       .$owlItems 
       .removeClass('active') 

      //add class active 
      this 
       .$owlItems 
       .eq(this.currentItem) 
       .addClass('active') 
     }, 

     onInitialized: function() { 
      var activeImg = $('.owl-carousel').find('.active').find('img'); 
      var comment = activeImg.attr('alt'); 
      var title = activeImg.attr('title'); 
      if (comment) $('.image-caption').html('<h4>' + title + '</h4><p>' + comment + '</p>'); 
     } 
    }); 

    owl = $('.owl-carousel').owlCarousel(); 
    $('.prev').click(function() { 
     owl.trigger('prev.owl.carousel'); 
    }); 
    $('.next').click(function() { 
     owl.trigger('next.owl.carousel'); 
    }); 

    owl.on('translated.owl.carousel', function(event) { 
     var activeImg = $(this).find('.active').find('img'); 
     var comment = activeImg.attr('alt'); 
     var title = activeImg.attr('title'); 
     if (comment) $('.image-caption').html('<h4>' + title + '</h4><p>' + comment + '</p>'); 
    }); 
}); 

スクリプトが正しく動作していません。

答えて

0

この解決策では、私はHTML figureに関連するキャプションまたは凡例を表すHTML figcaption要素を使用しています。

また、私は移動するコールバックの後OWL CarouselafterMoveに必要なすべてのロジックを追加しました:

$('.owl-carousel').owlCarousel({ 
 
    loop: true, 
 
    items: 1, 
 
    navigation: true, 
 
    pagination: true, 
 
    lazyLoad: true, 
 
    singleItem: true, 
 
    afterMove: function(elem) { 
 
     var current = this.currentItem; 
 
     var currentImg = elem.find('.owl-item').eq(current).find('img'); 
 

 
     $('figure') 
 
      .find('img') 
 
      .attr({ 
 
       'src': currentImg.attr('src'), 
 
       'alt': currentImg.attr('alt'), 
 
       'title': currentImg.attr('title') 
 
      }); 
 
     $('#figcaption').text(currentImg.attr('title')); 
 
    } 
 
});
.owl-carousel .owl-item img { 
 
    display: block; 
 
    width:80%; 
 
    height:100px; 
 
}
<link type="text/css" rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/owl-carousel/1.3.3/owl.carousel.min.css" /> 
 
<link type="text/css" rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/owl-carousel/1.3.3/owl.theme.min.css" /> 
 
<link type="text/css" rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/owl-carousel/1.3.3/owl.transitions.min.css" /> 
 

 
<script src="//cdnjs.cloudflare.com/ajax/libs/jquery/2.2.4/jquery.min.js"></script> 
 
<script src="//cdnjs.cloudflare.com/ajax/libs/owl-carousel/1.3.3/owl.carousel.min.js"></script> 
 

 
<figure id="currentImageWithCaption"> 
 
    <img src="https://malsup.github.io/images/p1.jpg" title="Title 1" alt="Title 1" width="50" height="30"> 
 
    <figcaption id="figcaption">Title 1</figcaption> 
 
</figure> 
 

 
<div class="owl-carousel"> 
 
    <div class="item"> 
 
     <img src="https://malsup.github.io/images/p1.jpg" title="Title 1" alt="Alt 1" /> 
 
    </div> 
 
    <div class="item"> 
 
     <img src="https://malsup.github.io/images/p2.jpg" title="Title 2" alt="Alt 2" /> 
 
    </div> 
 
    <div class="item"> 
 
     <img src="https://malsup.github.io/images/p3.jpg" title="Title 3" alt="Alt 3" /> 
 
    </div> 
 
    <div class="item"> 
 
     <img src="https://malsup.github.io/images/p4.jpg" title="Title 4" alt="Alt 4" /> 
 
    </div> 
 
</div>

+0

...
は必要ありません。別の画像を表示する代わりに、画像タイトルを
に設定するだけで、現在の画像にキャプションのみを表示することができます。 –

+0

あなたは 'HTML

'に読んでください:https://developer.mozilla.org/en/docs/Web/HTML/Element/figureしかし、あなたはあなたのソリューションのためにあなたのスクリプトを設定することができます –

0

を@YosvelQuinteroは、スクリプトを掲示が、彼はそれを削除した理由を知りません。誰かがそれを必要とする場合に備えて、私は再びそれを掲示しています。

<link type="text/css" rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/owl-carousel/1.3.3/owl.carousel.min.css" /> 
<link type="text/css" rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/owl-carousel/1.3.3/owl.theme.min.css" /> 
<link type="text/css" rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/owl-carousel/1.3.3/owl.transitions.min.css" /> 

<figure id="currentImageWithCaption"> 
    <img src="https://malsup.github.io/images/p1.jpg" title="Title 1" alt="Title 1" width="200" height="150"> 
    <figcaption id="figcaption">Title 1</figcaption> 
</figure> 

<div class="owl-carousel"> 
    <div class="item"> 
     <img src="https://malsup.github.io/images/p1.jpg" title="Title 1" alt="Alt 1" /> 
    </div> 
    <div class="item"> 
     <img src="https://malsup.github.io/images/p2.jpg" title="Title 2" alt="Alt 2" /> 
    </div> 
    <div class="item"> 
     <img src="https://malsup.github.io/images/p3.jpg" title="Title 3" alt="Alt 3" /> 
    </div> 
    <div class="item"> 
     <img src="https://malsup.github.io/images/p4.jpg" title="Title 4" alt="Alt 4" /> 
    </div> 
</div> 

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/2.2.4/jquery.min.js"></script> 
<script src="https://cdnjs.cloudflare.com/ajax/libs/owl-carousel/1.3.3/owl.carousel.min.js"></script> 

<style> 
figure img { 
display: block; 
width:100%; 
height: auto; 
} 
.owl-wrapper-outer{ 
    display : none; 
} 
</style> 

<script> 
    $('.owl-carousel').owlCarousel({ 
     loop: true, 
     items: 1, 
     navigation: true, 
     pagination: true, 
     lazyLoad: true, 
     afterMove: function(elem) { 
      var current = this.currentItem; 
      var currentImg = elem.find('.owl-item').eq(current).find('img'); 

      $('figure') 
       .find('img') 
       .attr('src', currentImg.attr('src')) 
       .attr('alt', currentImg.attr('alt')) 
       .attr('title', currentImg.attr('title')); 
      $('#figcaption').text(currentImg.attr('title')); 
     } 
    }); 
</script> 
+0

私の応答を更新しました –

関連する問題