Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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

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"
 }
}
like image 738
archangel Avatar asked Feb 09 '23 20:02

archangel


1 Answers

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>
like image 59
Saurabh Avatar answered Feb 12 '23 10:02

Saurabh