在prestashop 1.6.1.23的自定义模块中,我想在后台的产品详细信息选项卡上使用jquery。要创建选项卡,我使用hookDisplayAdminProductsExtra
函数。 jQuery已加载并且似乎正在工作。但是,如果我尝试使用简单的东西(例如隐藏元素),则什么也不会发生。
简单方案:
挂钩函数
public function hookDisplayAdminProductsExtra()
{
return $this->display(__FILE__, '/views/templates/admin/j_product_tab.tpl');
}
模板
<div class="aaa" id="abc">test</div>
脚本
window.onload = function() {
$(".aaa").hide();
}
结果是:在产品详细信息中,有一个额外的选项卡。在选项卡上,有一个div,其中带有单词“ test”。但是它仍然可见。
通过添加
进行测试if (window.jQuery) {
alert("OK");
} else {
alert("not OK");
}
带来所需的结果=>带有“确定”的警报,因此jquery本身可以工作。但是由于产品详细信息页面还使用了许多其他脚本,所以我感到惊讶的是,模块中的脚本以某种方式被“阻止”,“覆盖” ...在我看来,切换产品详细信息标签会重新加载所有其他标签的内容,因此我尝试仅在额外标签处于活动状态时运行脚本。
所以我在脚本中使用了一种解决方法:
var a = document.getElementById('abc');
a.onmouseover = doHide;
function doHide() {
$(".aaa").hide();
}
使用此替代方法,如果我访问产品页面,切换到附加选项卡,然后将鼠标移到元素上,脚本将成功运行,并且该元素将隐藏。但是我需要在脚本中执行更复杂的操作,即使使用此替代方法也无法运行。因此,我需要找到根本原因。
有人在这个特定领域(产品详细信息)和使用jquery有经验吗?我该怎么做才能解决此问题?
我觉得我应该使用一些调试工具,或者我缺少明显的东西,但这是我第一次使用prestashop模块,通常是Web应用程序开发。任何帮助将不胜感激。