我正在为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>
标签中,我仍然收到错误
答案 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 '$'
}