TypeError: $(...).carousel is not a function

55,748

I had the same issue, What I was missing was including bootstrap.js in my index.html, and after adding following it worked.

<script type="text/javascript" src="components/bootstrap/dist/js/bootstrap.js"></script>
Share:
55,748
archangel
Author by

archangel

Updated on December 23, 2020

Comments

  • archangel
    archangel over 3 years

    I know this has been asked in many questions, but the most common answer that jQuery isn't loaded doesn't work for me. It seems my jQuery is being loaded properly (version 1.10.2). I am trying to run the following code (tried even in console, so the loading issue doesn't remain): $('.carousel').on('mouseenter',function(){ $( this ).carousel();})

    Bootstrap carousel by itself is working fine. It's just when am trying to initialize it dynamically, it's not working. (I just started with angular and bootstrap, so I might be missing something very simple here.) I am using angular js and bootstrap for my application.

    EDIT: Here's my html code:

    <div class="row" ng-controller="ItemGallery" style="padding-top:30px;">
        <div class="col-md-4 item_card" ng-repeat="item in item_array">
            <a href="{{'/product/id='+item.product_id}}" class="thumbnail">
                <div id="{{'carousel_'+item.product_id}}" class="carousel slide" data-ride="carousel" data-interval="false">
                    <div class="carousel-inner" role="listbox">
                        <div class="item active">
                            <img src="{{item.thumbnail}}" alt="{{item.product_title}}" class="img-responsive product-image"/>
                        </div>
                        <div class="item">
                            <img src="{{item.nutrition_thumbnail}}" alt="{{item.product_title}}" class="img-responsive nutri-image"/>
                        </div>
    
                    </div>
                </div>
                <div class="caption post-content">
                    <h4 class="h_no_margin">
                        <p class="pull-left title">{{item.product_title.toLowerCase() }}</p>
                        <p class="text-right">${{item.price}}</p>
                    </h4>
                    <small>
                        {{item.product_desc}}
                    </small>
                </div>
            </a>
    
        </div>
    
    </div>
    

    Angular code:

    var app = angular.module('item_gallery', []);
    
    app.controller('ItemGallery', function($http, $scope, $location) {
    $http.get("/product/list")
    .success(function(response) {
        $scope.item_array = response.response;
        });
    
    
    });
    

    I used bower to take care of dependencies.

    {
     "name": "nutrinext",
     "version": "0.0.0",
     "dependencies": {
      "angular": "~1.3.1",
      "angular-bootstrap": "~0.11.2",
      "angular-timeago": "~0.1.3",
      "angular-ui-router": "~0.2.11",
      "ngstorage": "~0.3.0",
      "bootstrap": "~3.3.0",
      "bootstrap-markdown": "~2.7.0",
      "jquery": "1.10.2",
      "fastclick": "~1.0.3",
      "fontawesome": "~4.2.0",
      "pubnub": "~3.6.4"
     },
    "devDependencies": {},
    "resolutions": {
      "angular": "~1.3.1",
      "bootstrap": "~3.3.0"
     }
    }