我尝试在网上搜索,但仍然无法理解为什么我的jQuery功能在Joomla中不起作用。
所以,我有OrionMenu我希望融入我的Joomla 3.
作为一个独立的菜单,这个菜单效果很好,但在尝试将其加载到Joomla之后 - 每次我翻转菜单时,Chrome的控制台都说:
Uncaught TypeError: undefined is not a function jquery-1.10.1.min.js:4
(anonymous function) jquery-1.10.1.min.js:4
n.event.special.(anonymous function).handle jquery.min.js:3
n.event.dispatch jquery.min.js:3
r.handle jquery.min.js:3
搜索后我发现Joomla在noconflict模式下加载了它自己的jQuery,所以我尝试以另一种方式集成OrionMenu,现在它说:
Uncaught TypeError: undefined is not a function (index):47
(anonymous function) (index):47
c jquery-1.10.1.min.js:4
p.fireWith jquery-1.10.1.min.js:4
x.extend.ready jquery-1.10.1.min.js:4
q
我的索引文件的第47行是:
jQuery(document).ready(function() { jQuery().orion({speed: 500}); });
我原来的OrionMenu包含如下:
<link href="templates/<?php echo $this->template; ?>/menu-orion/css/styles.css" rel="stylesheet">
<script type="text/javascript" src="templates/<?php echo $this->template; ?>/menu-orion/js/jquery-1.10.1.min.js"></script>
<script type="text/javascript">
var $j = jQuery.noConflict();
// $j is now an alias to the jQuery function; creating the new alias is optional.
$j(document).ready(function() { $j().orion({speed: 500});});
</script>
在网上阅读了一些内容后,我把它更改为已经提到的一段代码,它返回一个控制台错误 - 索引行47上的未定义函数
我不知何故相信Joomla的这段代码会破坏一切。
<script type="text/javascript">
jQuery(window).on('load', function() {
new JCaption('img.caption');
});
</script>
但无论如何,帮助会很惊人:)如果你知道如何实现或jQuery(document).ready(function() { jQuery().orion({speed: 500}); });
可能出错的话会很棒。
提前致谢!
答案 0 :(得分:3)
好的,请确保您不加载自己的jQuery副本。您可以使用预装Joomla的版本。以下代码将确保仅导入一次并处于noConflict模式:
<?php
JHtml::_('jquery.framework');
?>
将上面的代码放在模板的任何位置,最好放在顶部,以便知道它在哪里。
然后尝试使用Joomla的内置方法将自定义JS添加到头部,如下所示:
$doc = JFactpry::getDocument();
$orion = ' jQuery(document).ready(function() {
jQuery().orion({
speed: 500
});
});
';
$doc->addScriptDeclaration($orion);
您可以将此代码放在我提到的导入jQuery
之前的代码之下答案 1 :(得分:0)
如果您使用Joomla: JHTML :: _( 'jquery.framework'); 加载jQuery但是在确定不加载其他jQuery版本之后,非常重要的是记住,在你自己的jQuery脚本中,你必须用jQuery改变所有$,例如: $(function(){.... 成为 jQuery(function(){