jquery在外部js文件中工作,但在视图刀片中不起作用

时间:2018-01-22 07:40:50

标签: javascript php jquery laravel laravel-5.5

我正在使用laravel 5.5。当我在外部js文件中使用jquery时它可以正常工作但是当我在刀片视图中写入jquery时它会给出一个错误:$ not defined or found。我还在加载app.js文件后通过在布局文件中编写jquery进行检查,它可以工作。 Jquery只是不在刀片内部工作。当我加载jquery时,Jquery在刀片内部工作。但是,即使在不加载jquery之后,它如何在外部js和布局中工作。所以我担心的是,如果在laravel中默认加载jquery,为什么它不能在刀片内部工作?

这是我的刀片内容:

@extends('layouts.app')
@section('content')
<div class="container">
</div>
@endsection

<script type="text/javascript">
$(document).ready(function() {
    alert('lol');
})
</script>

2 个答案:

答案 0 :(得分:2)

您的javascript代码在任何部分之外,因此不会呈现。在刀片中呈现内联javascript的好方法是在布局中使用@stack,然后在任何扩展布局的视图中使用@push

app.blade.php:

<html>
<head></head>
<body>
[...]
@yield('content')
[...]
<script src="jquery.js"></script>
@stack('scripts')
</body>
</html>

您的观点(template.blade.php):

@extends('layouts.app')
@section('content')
<div class="container">
</div>
@endsection

@push('scripts')
<script type="text/javascript">
$(document).ready(function() {
    alert('lol');
})
</script>
@endpush

答案 1 :(得分:0)

请理解:

这确实有效:

<html>
 <header>
  <script src="jquery.js"></script>
 </header>
 <body>

  <script>
   /* your js inline code here */
  </script>
 </body>
</html>

但更好的解决方案是:

<html>
 <header>

 </header>
 <body>

  <script src="jquery.js"></script>
  <script>
   /* your js inline code here */
  </script>
 </body>
</html>

这不起作用:

<html>
 <header>

 </header>
 <body>  
  <script>
   /* your js inline code here */
  </script>
  <script src="jquery.js"></script>
 </body>
</html>