Joomla 3和自定义jQuery函数 - 未定义的函数

时间:2014-09-23 18:10:54

标签: javascript jquery joomla joomla3.0

我尝试在网上搜索,但仍然无法理解为什么我的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}); });可能出错的话会很棒。

提前致谢!

2 个答案:

答案 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(){