2016-07-13 15 views
0

Ich habe gerade ein Problem bei der Konfiguration von flexslider auf meiner Site. Ich benutze Elixier Laravel und Bower.

Ich habe alle meine SCSS, weniger und js-Dateien kompiliert, aber wenn ich im Zusammenhang etwas Code auf den Schieber auf meiner Homepage hinzufügen bekomme ich diesen Fehler:

Uncaught TypeError: $(...).flexslider is not a function using 

nichts scheint auf meiner Seite zeigt bis werden bei alle

ich habe in der layout.blade Datei die Javascript nur

<!DOCTYPE html> 
<html lang="en"> 
<head> 
    <meta charset="utf-8"> 
    <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"> 
    <meta http-equiv="x-ua-compatible" content="ie=edge"> 
    <title>Creative Forces Enrichment</title> 
    <link href='https://fonts.googleapis.com/css?family=Roboto+Condensed:400,700' rel='stylesheet' type='text/css'> 
    <link rel="stylesheet" href="{{ elixir('css/app.css') }}"> 
    <link rel="stylesheet" href="{{ elixir('css/style.css') }}"> 
</head> 
    <body id="app-layout"> 
     <div class="line"></div> 
     <header id="header" role="banner"> 
<div class="container"> 

        <!-- <button class="hamburger hamburger--collapse" type="button"> 
         <span class="hamburger-box"> 
          <span class="hamburger-inner"></span> 
         </span> 
        </button> --> 
<div class="container text-xs-center"> 
    <nav class="nav nav-inline"> 
    <a class="nav-link" href='{{ url("/") }}'>Home</a> 
    <a class="nav-link" href='{{ url("/team") }}'>Our Team</a> 
    <a class="nav-link" href='{{ url("/media") }}'>Media</a> 
    <a href='{{ url("/") }}' class="nav-link"><img src="./images/zipzap.png" alt=""></a> 
    <a class="nav-link" href='{{ url("/about") }}'>About Us</a> 
    <a class="nav-link" href='{{ url("/contact") }}'>Contact Us</a> 
    <a class="nav-link" href='{{ url("/donate") }}' id="donate">Support Us</a> 
    </nav> 
</div> 
    </div> 
    </header> 


     @yield('content') 
     <div class="container"> 
     <div class="row"> 
     <div class="text-xs-center spacing"> 

      <hr> 

    <div class="text-center copy">&copy; Zip Zap Zop Enrichment <?php echo date("Y") ?></div> 

</div> 

     </div> 
    </div> 

     <!-- JavaScripts --> 
     <script src="{{ elixir('js/app.js') }}" type="text/javascript"></script> 


    <script type="text/javascript"> 
     var metaslider_158 = function($) { 
      $('#metaslider_158').addClass('flexslider'); // theme/plugin conflict avoidance 
      $('#metaslider_158').flexslider({ 
       slideshowSpeed:3000, 
       animation:"fade", 
       controlNav:false, 
       directionNav:false, 
       pauseOnHover:true, 
       direction:"horizontal", 
       reverse:false, 
       animationSpeed:600, 
       prevText:"&lt;", 
       nextText:"&gt;", 
       slideshow:false 
      }); 
     }; 
     var timer_metaslider_158 = function() { 
      var slider = !window.jQuery ? window.setTimeout(timer_metaslider_158, 100) : !jQuery.isReady ? window.setTimeout(timer_metaslider_158, 1) : metaslider_158(window.jQuery); 
     }; 
     timer_metaslider_158(); 
    </script> 




    </body> 
</html> 

hier

zu testen, ist die Seite, die ich mein Schieber auf zeigen wollen:

@extends('layout') 

@section('content') 

<!-- Place somewhere in the <body> of your page --> 
<!-- Place somewhere in the <body> of your page --> 
<div class="flexslider"> 
    <ul class="slides"> 
    <li> 
     <iframe id="player_1" src="http://player.vimeo.com/video/39683393?api=1&player_id=player_1" width="500" height="281" frameborder="0" webkitAllowFullScreen mozallowfullscreen allowFullScreen></iframe> 
    </li> 
    <li> 
     <img src="./images/maja.jpg" /> 
    </li> 
    <li> 
     <img src="./images/maja.jpg" /> 
    </li> 
    <li> 
     <img src="./images/maja.jpg" /> 
    </li> 
    </ul> 
</div> 
<div class="container"> 
    <div class="content-wrapper"> 
     <div class="color-wrapper"> 
      <div class="main-container"> 
       <div class="gdlr-item gdlr-post-slider-item style-post-right post-slider"></div> 
      </div> 
     </div> 
    </div> 
</div> 


@endsection 

und hier ist mein gulp.js

var elixir = require('laravel-elixir'); 

/* 
|-------------------------------------------------------------------------- 
| Elixir Asset Management 
|-------------------------------------------------------------------------- 
| 
| Elixir provides a clean, fluent API for defining some basic Gulp tasks 
| for your Laravel application. By default, we are compiling the Sass 
| file for our application, as well as publishing vendor resources. 
| 
*/ 

elixir(function(mix) { 
    // Copy Styles 
    mix.copy('bower_components/bootstrap/scss/', 'resources/assets/sass/libraries/bootstrap/') 
     .copy('bower_components/css-hamburgers/_sass/hamburgers', 'resources/assets/sass/libraries/hamburgers/') 
     .copy('bower_components/flexslider/css', 'resources/assets/less/libraries/flexslider/') 

    // Copy Scripts 
    .copy('bower_components/jquery/dist/jquery.js', 'resources/assets/js/libraries/jquery.js') 
    .copy('bower_components/bootstrap/dist/js/bootstrap.js', 'resources/assets/js/libraries/bootstrap.js') 
    .copy('bower_components/flexslider/jquery.flexslider.js', 'resources/assets/js/libraries/flexslider.js') 


    // Compile App Assets 
    .sass('app.scss','public/css/app.css') 
    .less('app.less','public/css/style.css') 

    .scripts([ 
    'libraries/jquery.js', 
    'libraries/bootstrap.js', 
    'libraries/flexslider.js', 
    'app/**/*.js' 
    ], 'public/js/app.js', 'resources/assets/js') 

    // Create version 
    .version(['css/app.css', 'css/style.css', 'js/app.js']); 
}); 

jede mögliche Hilfe würde geschätzt Datei!

+0

stellen Sie sicher, jquery ist an der Spitze aller js enthalten – pradeep

+0

yeah. Ich habe es zuerst installiert – avasssso

+0

jetzt habe ich flexslider vor dem Bootstrap hinzugefügt und der Fehler ist weg, aber mein Schieberegler erscheint nicht aus irgendeinem Grund – avasssso

Antwort

0

aus Kompatibilitätsgründen sollten Sie Ihre jquery Code wie folgt wickeln:

(function($){ 

    // jQuery code is in here 

})(jQuery); 
0

Sie brauchen, ist das Dokument, um sicherzustellen, vollständig vor der Ausführung oder sie JavaScript in app.js kann tatsächlich nehmen länger als erwartet sind geladen, um Ihre Bibliothek, die zu diesem Fehler führen wird.

Stattdessen können wir beide alias $ zu jQuery und wir können bind to the .ready() Handler wie folgt aus:

jQuery(function($){ 
    //your code 
}); 

dies die Notwendigkeit jQuery zu $ in einem Verschluss zu alias mildert und dann eine fertige Funktion innerhalb auszuführen.