我正在使用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>
答案 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>