Jquery 对象不支持此属性或方法”IE

问题描述 投票:0回答:1

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

有人可以帮忙解决这个错误吗?

php jquery joomla mootools
1个回答
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 这样的库不应像示例代码中那样加载模块,而应成为核心模板的一部分,以便所有模块都知道它们正在查看相同的单个版本。

希望有帮助。

© www.soinside.com 2019 - 2024. All rights reserved.