我正在使用一个使用jquery的joomla模块,称为有机标签,
在渲染此模块的同一页面上,有一个图像滑块,我认为它也使用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>
有人可以帮助您解决此错误吗?
答案 0 :(得分:2)
如果您在使用这两个模块时遇到错误,那么它们可能会相互冲突。
很难知道发生了什么,因为你的问题很模糊;如果我们能够看到实际发生的错误,那将会有所帮助;即,如果您可以提供指向显示它的测试页面的链接。如果我们可以确定这里有哪些库(比如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这样的库不应该像在示例代码中那样加载模块,而应该是您的核心模板的一部分,这样所有模块都可以知道它们正在查看相同的单个版本。
希望有所帮助。