我正在使用一个joomla模块,它使用jquery,称为有机选项卡,
在渲染此模块的同一页面上,有一个图像滑块,我认为它也使用了 jquery 或 mootools,
如果我在页面上取消发布此滑块,选项卡将起作用,但是当两者一起工作时,我得到:
//Message: Object doesn't support this property or method
//Line: 362
//Char: 9
//Code: 0
<?php
// no direct access
defined('_JEXEC') or die('Restricted access');
($params->get('loadjq')==1)? $mainframe->addCustomHeadTag('<script type="text/javascript" src="'.$module_base.'jquery.js"></script>'):'';
$mainframe->addCustomHeadTag('<link type="text/css" rel="stylesheet" href="'.$module_base.'/style/basic/black/style.css" />');
$mainframe->addCustomHeadTag('<script type="text/javascript" src="'.$module_base.'tabs.js"></script>');
?>
<script type='text/javascript'>
jQuery(function(){
jQuery("#tx-tabs").organicTabs({
"speed":"<?php echo $transition_speed;?>",
"action":'<?php echo $rotate_action;?>'
});
});
</script>
<div id="tx-tabs" style="width:<?php echo $module_width,'px';?>">
<?php if($control_panel=='top'):?>
<ul class="nav" style="width:<?php echo $tab_width,'px';?>">
<?php for ($i=0; $i < $items; $i++) : ?>
<li ><a href="#<?php echo str_replace(' ', '',$list[$i]->title);?>" <?php echo ($i==0)? 'class="current"':'';?> ><?php echo $list[$i]->title;?></a></li>
<?php endfor;?>
</ul>
<?php endif;?>
<div class="list-wrap">
<?php for ($i=0; $i < $items; $i++) : ?>
<div id="<?php echo str_replace(' ', '',$list[$i]->title);?>" <?php echo ($i!=0)?'class="hide "':'';?>>
<?php modOrganicTabHelper::renderItem($list[$i], $params, $access); ?>
<div class="clear"></div>
</div>
<?php endfor;?>
</div> <!-- END List Wrap -->
<?php if($control_panel=='bottom'):?>
<ul class="nav" style="width:<?php echo $tab_width,'px';?>">
<?php for ($i=0; $i < $items; $i++) : ?>
<li ><a href="#<?php echo str_replace(' ', '',$list[$i]->title);?>" <?php echo ($i==0)? 'class="current"':'';?> ><?php echo $list[$i]->title;?></a></li>
<?php endfor;?>
</ul>
<?php endif;?>
</div>
有人可以帮忙解决这个错误吗?
如果您仅在使用这两个模块时才出现错误,那么它们可能相互冲突。
很难知道发生了什么,因为你的问题很模糊;如果我们能够看到实际发生的错误,将会有所帮助;即如果您可以提供一个显示它的测试页面的链接。如果我们能够确定这里使用的是哪些库(即 JQuery 和 Mootoools?或者只是 JQuery?)以及什么版本,这也会有所帮助。
您提供给我们的 PHP 代码在很大程度上也无关紧要,因为错误是基于 Javascript 的,而您向我们展示的 Javascript 代码的唯一内容就是包含内容。
但在缺乏更好的诊断数据的情况下,我将进行大胆的猜测。
如果您认为第二个模块使用 Mootools 是正确的,那么重要的是要知道,如果您尝试在同一站点上使用 JQuery 和 Mootools,则可能会出现重大问题。 JQuery 和 Mootools 都定义了一个名为
$()
的函数,这是它们的核心函数,但两者的工作方式完全不同。
可能发生的情况是,您正在加载两个库,但是
$()
最终仅引用第二个加载的库(它将覆盖第一个加载的代码),因此引用另一个库的任何代码将立即中断,可能会出现类似于您所描述的错误。
理想情况下,您不会同时使用这两个库,因为让两个库执行基本上非常相似的工作会产生大量开销。最好选择一个并坚持使用使用它的模块。因此,如果您使用基于 Mootools 的滑块控件,我的建议是切换到基于 JQuery 的控件。 (或者将其他所有内容都切换到 Mootools;以更容易的为准)
如果您有在同一页面上同时拥有 JQuery 和 Mootools,那么有多种方法可以以兼容的方式同时运行这两个库,但您需要知道自己在做什么。可以在 JQuery 和 Mootools 网站上找到说明。
此问题的另一个可能原因是,如果两个模块都使用相同的库(即 JQuery),但包含不同版本的库。例如,如果一个版本附带 JQuery 1.3,另一个版本附带 1.6,则这两个版本之间存在显着差异。出于类似的原因,最终效果实际上可能与上述相同。
如果是这种情况,您应该尝试确保仅在页面上加载 JQuery 一次,并且加载尽可能最新的版本。理想情况下,像 JQuery 这样的库不应像示例代码中那样加载模块,而应成为核心模板的一部分,以便所有模块都知道它们正在查看相同的单个版本。
希望有帮助。