1

アコーディオン スクリプトは Firefox で正常に動作しますが、これが動作する唯一のブラウザーであるようです。リンクは次のとおりです (Q&A までスクロールします)。

https://www.in-acuity.com/our-experts/experts_details/20-Frank%20-Koch

最新の jQuery & UI ライブラリを読み込んでいます。このアコーディオンは他の多くの Web サイトでエラーなく正常に動作しています。このプラグインで問題が発生したことはありません。これまで。

Chromeでポップアップしているエラーは次のとおりです。

Uncaught TypeError: 'in' 演算子を使用して未定義の 'height' を検索することはできません

私はこれが何を意味するかを非常に一般的に理解していますが、なぜここで発生し、このスクリプトが正常に実行されている他の少数のサイトでは発生しないのですか. 何時間もデバッグして、ここの窓からアザラシの赤ちゃんを放り出す準備ができています。

ご提供いただけるご支援をよろしくお願いいたします。

コードは次のとおりです。

<?php
$db =& JFactory::getDBO();

$query = "[OMITTED]";
$db->setQuery( $query );
$questions = $db->loadObjectList();
$count = count($db->loadObjectList());

if($count) {

    echo '<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js" type="text/javascript"></script>
    <script src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.9.0/jquery-ui.min.js" type="text/javascript"></script>
    <script src="[OMITTED]" type="text/javascript"></script>';  

    echo "<script type='text/javascript'>
                $(document).ready(function() {
                    $('.mfx_accordion').mfxAccordion({
                        slideSpeed: 300,
                        singleOption: true
                    });
                });
            </script>";

    echo '<div class="mfx_accordion">';

    foreach($questions as $question) {

        echo '<div class="section">
                 <h2 class="trigger settings"><span class="icon"></span>'.$question->ques.'</h2>
                 <div class="content">
                     <p>'.$question->anws.'</p>
                 </div>
              </div>';      



    }

    echo '</div>';  

}

?> 

編集:

ジョージの助けのおかげで、修正することができました。更新された作業コードは次のとおりです。

echo "<script type='text/javascript'>

          jQuery.noConflict(); 

          jQuery(document).ready(function($) {
              $('.mfx_accordion').mfxAccordion({
                  slideSpeed: 300,
                  singleOption: true
              });
          })(jQuery);

      </script>";
4

1 に答える 1

2

この種のエラーは通常、jquery と mootools が同じページで使用されている場合に発生します (ご覧のとおり)。どちらもライブラリのショートカットとして $ 記号を使用しています。私のアドバイスは、jqueryコードを調べて $ 変数を置き換え、それが違いを生むかどうかを確認することです

// Disable the $ global alias completely
jQuery.noConflict();

// For jQuery scripts
(function($){

// set a local $ variable only available in this block as an alias to jQuery
... here is your jQuery specific code ...

})(jQuery);

安全のために、mootools スクリプトに対しても同じようなことを行います。それがjQueryエラーの原因である可能性があるためです:

(function($){

// set a local $ variable only available in this block as an alias 
// to Mootools document.id
... here is your Mootools specific code ...

})(document.id);
于 2012-10-31T09:37:51.823 に答える