Карусель не загружается

Я пытаюсь использовать карусель Bootstrap и в какой-то степени добился успеха. Я также могу щелкнуть и изменить изображения. Но у меня есть одна проблема. Его просто не скользит! Где я делаю неправильно?

HTML:

<div id="my_carousel" class="carousel slide">

  <ol class="carousel-indicators">
    <li data-target = "#my_carousel" data-slide-to = "0" class="active"></li>
    <li data-target = "#my_carousel" data-slide-to = "1"></li>
    <li data-target = "#my_carousel" data-slide-to = "2"></li>
  </ol>

  <div class="carousel-inner i">

    <div class="item active">
      <img src="images/f3.jpg" alt = "i1" class="img-responsive">
    </div>

    <div class="item">
      <img src="images/f2.jpg" alt = "i2" class="img-responsive">
    </div>

    <div class="item">
      <img src="images/f1.jpg" alt = "i3" class="img-responsive">
    </div>

  </div>

  <a class="carousel-control left" href="#my_carousel" data-slide = "prev">
    <span class="icon-prev left"></span>
  </a>

  <a class="carousel-control right" href="#my_carousel" data-slide = "next">
    <span class="icon-next right"></span>
  </a>
</div>

EDIT:

JQuery

<script language="JavaScript" type="text/javascript">
  $(document).ready(function(){
    $('.carousel').carousel({
      interval: 3000
    })
  });    
</script>
<script language="JavaScript" type="text/javascript" src="scripts/jquery.js"></script>
<script language="JavaScript" type="text/javascript" src="scripts/bootstrap.min.js"></script>

Ответы

Ответ 1

Вы включили этот script:

<script language="JavaScript" type="text/javascript">
  $(document).ready(function(){
    $('.carousel').carousel({
      interval: 2000
    })
  });    
</script>

Edit

И даже если он не работает, проверьте, вызываете ли вы выше script перед вызовом jquery. Итак, это должно быть так:

<!-- Calling jquery first -->
<script language="JavaScript" type="text/javascript" src="scripts/jquery.js"></script>
<script language="JavaScript" type="text/javascript" src="scripts/bootstrap.min.js"></script>
  <!-- Carousel -->
<script language="JavaScript" type="text/javascript">
  $(document).ready(function(){
    $('.carousel').carousel({
      interval: 3000
    })
  });    
</script>  

Ответ 2

Недавно я загрузил bootstrap carousel (v3.2.0), он не работает с самой новой версией jQuery (v1.11) из-за этой строки:

if ($.support.transition && this.$element.hasClass('slide')) {

Часть $.support.transition была для внутреннего использования jQuery и устарела, удаляя только это, что должно позволить вашему коду работать снова. Еще лучше, вы могли/должны заменить его свойством обнаружения свойств Modernizr: Modernizr.csstransitions.

UPDATE: Также jQuery v11.1 не поддерживает .emulateTransitionEnd. Чтобы решить эти проблемы, убедитесь, что включает в себя пакет transition.js в вашем пакете. Он содержит следующий код:

+function ($) {
  'use strict';

  // CSS TRANSITION SUPPORT (Shoutout: http://www.modernizr.com/)
  // ============================================================

  function transitionEnd() {
    var el = document.createElement('bootstrap')

    var transEndEventNames = {
      WebkitTransition : 'webkitTransitionEnd',
      MozTransition    : 'transitionend',
      OTransition      : 'oTransitionEnd otransitionend',
      transition       : 'transitionend'
    }

    for (var name in transEndEventNames) {
      if (el.style[name] !== undefined) {
        return { end: transEndEventNames[name] }
      }
    }

    return false // explicit for ie8 (  ._.)
  }

  // http://blog.alexmaccaw.com/css-transitions
  $.fn.emulateTransitionEnd = function (duration) {
    var called = false
    var $el = this
    $(this).one('bsTransitionEnd', function () { called = true })
    var callback = function () { if (!called) $($el).trigger($.support.transition.end) }
    setTimeout(callback, duration)
    return this
  }

  $(function () {
    $.support.transition = transitionEnd()

    if (!$.support.transition) return

    $.event.special.bsTransitionEnd = {
      bindType: $.support.transition.end,
      delegateType: $.support.transition.end,
      handle: function (e) {
        if ($(e.target).is(this)) return e.handleObj.handler.apply(this, arguments)
      }
    }
  })

}(jQuery);

Ответ 3

Bootstrap.js использует функции из jQuery.js

поэтому вы должны загрузить jQuery.js перед Boostrap.js

<script src="jQuery.js"></script>
<script src="bootstrap.js></script>

Зависимости плагинов

Некоторые плагины и компоненты CSS зависят от других плагины. Если вы включаете плагины в отдельности, обязательно проверьте эти зависимости в документах. Также обратите внимание, что все плагины зависят от jQuery (это означает, что jQuery должен быть включен перед файлами плагина). Обратитесь к нашему bower.json, чтобы узнать, какие версии jQuery поддерживаются.

http://getbootstrap.com/javascript/

Ответ 4

Ответ Ryan Taylor помог мне с этой проблемой, но вместо удаления проверки для $.support.transition из carousel.js, я добавил этот небольшой патч JS в мою сборку, чтобы заполнить пробел, оставленный jQuery:

https://gist.github.com/jonraasch/373874#file-jquery-support-transition-js

Ответ 5

Вам не нужен javascript. Достаточно следующего:

<div id="my_carousel" class="carousel slide container" data-ride="carousel">

Ответ 6

Убедитесь, что вы указали эту ссылку

<script src="bootstrap/js/bootstrap.min.js"></script>

Ответ 7

Странно, но если я RemoveData() и повторно инициализирую карусель, он работает как шарм

//Function to animate slider captions
function doAnimations(elems) {
    //Cache the animationend event in a variable
    var animEndEv = 'webkitAnimationEnd animationend';

    elems.each(function () {
        var $this = $(this),
            $animationType = $this.data('animation');
        $this.addClass($animationType).one(animEndEv, function () {
            $this.removeClass($animationType);
        });
    });
}


//Variables on page load
var $myCarousel = $('#myCarousel'),
    $firstAnimatingElems = $myCarousel.find('.item:first').find("[data-animation ^= 'animated']");

//Initialize carousel
$myCarousel.carousel();

//Animate captions in first slide on page load
doAnimations($firstAnimatingElems);

// --------------------------------------------------
//Pause carousel and remove data
$myCarousel.carousel('pause').removeData();

//Re-initialize carousel
$myCarousel.carousel();

//Animate captions in first slide on page load
doAnimations($firstAnimatingElems);
// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

//Other slides to be animated on carousel slide event
$myCarousel.on('slide.bs.carousel', function (e) {
    var $animatingElems = $(e.relatedTarget).find("[data-animation ^= 'animated']");
    doAnimations($animatingElems);
});

Ответ 8

У меня была та же проблема, и я смог заставить ее работать, добавив этот фрагмент в свой код.

  <script>
        $(function(){
            // Activate Carousel
            $("#myCarousel").carousel();
        });
    </script>