smarty global url调用jquery但$未定义

问题描述 投票:0回答:1

我正在为prestashop网站开发一个自定义主页。

我没有使用布局,因为我的主页必须干净,我不需要像页眉和页脚和菜单等的东西

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

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

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

在我关闭<body>标签之前,我称之为“家庭自定义”js文件

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

从这样开始

$(function).ready(function(){

我的浏览器抛出错误Uncaught ReferenceError: $ is not defined这是奇怪的,因为Jquery在开始时加载。我很困惑

编辑

即使我复制jquery代码并将其放在<script>中的<head>标记中,我也得到了错误

jquery smarty prestashop-1.7
1个回答
0
投票

这里的解决方案:

它类似于其他cms-> jquery冲突问题,但它值得解释,因为没有帖子涵盖Prestashop环境中的prestashop jQuery.noconflict()用法

由于prestashop在编译模板时使用/js/jquery/jquery.noConflict.php中调用的noConflict classe,因此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 '$'
} 
© www.soinside.com 2019 - 2024. All rights reserved.