Jquery Object不支持此属性或方法“IE

时间:2011-09-06 13:13:17

标签: jquery joomla mootools

我正在使用一个使用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>

有人可以帮助您解决此错误吗?

1 个答案:

答案 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这样的库不应该像在示例代码中那样加载模块,而应该是您的核心模板的一部分,这样所有模块都可以知道它们正在查看相同的单个版本。

希望有所帮助。