Jquery Object не поддерживает это свойство или метод "IE - PullRequest
1 голос
/ 06 сентября 2011

Я использую модуль 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>

Может ли кто-нибудь помочь с устранением этой ошибки?

1 Ответ

2 голосов
/ 06 сентября 2011

Если вы получаете ошибки только при использовании обоих этих двух модулей, возможно, они конфликтуют друг с другом.

Очень трудно понять, что происходит, потому что ваш вопрос неопределенный;это помогло бы, если бы мы могли видеть, что ошибка действительно происходит;т.е. если бы вы могли предоставить ссылку на тестовую страницу, которая показывает это.Также было бы полезно, если бы мы могли быть уверены, какие библиотеки были в игре (например, 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, не должна загружаться с модулем, как в вашем примере кода, но должна быть частью вашего базового шаблона, чтобы все модули могли знать, что они смотрят на одну и ту же версию.

Надеюсь, это поможет.

...