smarty全局url调用jquery但未定义$

时间:2019-03-25 12:08:52

标签: jquery smarty prestashop-1.7

我正在为prestashop网站创建自定义主页。

  

我不使用布局,因为我的主页必须整洁,并且不需要诸如页眉,页脚和菜单之类的东西

使用聪明的全局变量,我在<head>标记中这样调用我的jquery

<script src='{$urls.js_url}jquery.js'></script>

当我在线访问我的页面时,URL是正确的(mysite.com/mytheme/js/jquery.js),如果我访问它,则可以看到jquery文件。

在关闭<body>标签之前,我将我的“ home custom” js文件称为

<script src='{$urls.js_url}my_script.js'></script>

像这样开始

$(function).ready(function(){

我的浏览器向我抛出错误 Uncaught ReferenceError: $ is not defined很奇怪,因为Jquery从一开始就被加载。我很困惑

编辑

即使我复制了jQuery代码并将其放在<script>内的<head>标签中,我仍然收到错误

1 个答案:

答案 0 :(得分:0)

解决方法:

  

它与其他cms-> jquery冲突问题类似,但由于没有任何一篇文章介绍了Prestashop环境中的prestashop jQuery.noconflict()用法,因此值得解释

由于每次编译模板时prestashop都会使用/js/jquery/jquery.noConflict.php中调用的noConflict类,因此jquery变量将被静音($和jQuery)

因此,当您尝试通过自定义模板/主题使用jquery时,必须遵循$.noConflict function的规则

如果您尝试执行自定义jquery函数,则将代码包装在

(function($){
 // this place is safe to use $ outside the $.ready function
 $.fn.yourCustomFunction = function(){}
}

如果您要编写一些Jquery,只需将变量$或jQuery放在$ .ready函数参数中,如下所示:

$(document).ready(function($){
   // $ is safe to use. if you prefere jQuery instead, replace the parameter '$'
}