0

ファンシーボックスでajax経由で動的コンテンツを読み込もうとしています。

それはうまくプルしますが、デフォルトの機能を使用するか、ajaxを介して使用する場合、タブを変更しません。しかし、私はfancyboxを使用し、タイプを「iframe」に設定すると、ロードされ、タブが適切に切り替わります。

iframe を使用しないことを検討しているので、ボックスが緩和され、選択したタブに自動調整されます

ライブ サイトは www.wearsitbest.com ...ログイン/登録リンクです。

$(document).ready(function() {

      $("#various2").fancybox();

      $("#various3").fancybox();

              });     </script>

ファンシーボックスへのリンク

ログイン/登録

login.php の tabbed.js

onload = function() { var e; 変数 i = 0; while (e = document.getElementById('galleryx').getElementsByTagName ('DIV') [i++]) { if (e.className == 'on' || e.className == 'off') { e.onclick = function () { var getEls = document.getElementsByTagName('DIV'); for (var z=0; z

助けてください!!!!

4

1 に答える 1

0

編集: さて、login.php ファイルを確認しました。fancybox プラグインを使用して AJAX でコンテンツをロードしていることを思い出してください。これは、iframe に配置することとは大きく異なります。AJAX を介してコンテンツを読み込むと、コンテンツはページの一部であり、ページ内の個別の HTML ドキュメントではありません。それはあなたのページと同じスクリプトを共有し、あなたのメイン ページのスクリプトはロードされたコンテンツにも適用できます。そのため、jQuery コードを使用することをお勧めします。

さて、コードを実行したときのfirebug javascriptコンソールでは機能しましたが、login.phpファイルに入れたときは機能しませんでした。明らかにスクリプトは、fancybox によって ajax 経由でロードされていません。見てください: AJAX がロードされたページでの fancybox の使用。firebug またはその他のツールで fancybox ログイン要素を調べると、スクリプトがロードされていないことがわかります。

したがって、ログイン ビットの読み込み時にスクリプトを処理するには、メイン ページに別のコードが必要です。これには fancyboxonCompleteオプションを使用できます。したがって、ログイン リンクの fancybox ビットを初期化するコードでは、$("#various3").fancybox();代わりにこれを使用します。

$("#various3").fancybox({onComplete: function() {
    var $gallery = $('#gallery');
    var $titles = $gallery.find('div[title]');
    $titles.click(function() {
        var $this = $(this);
        if ($this.hasClass('off')) {
            $titles.removeClass('on').addClass('off');
            $this.removeClass('off').addClass('on');
            $gallery.find('.show').removeClass('show').addClass('hide').hide()
                .end().find('#' + $this.attr('title')).removeClass('hide').addClass('show').show();
        }
    });
});

これはあなたのメインページにあることに注意してください。このコードは、fancybox がコンテンツをロードするたびに実行されるようになりました。私が投稿した jQuery コードの代わりに、独自の tabbed.js JavaScript コードをここで使用できますが、どちらも正常に動作します。

ここで根本的に間違っていることが 1 つあります。スタンドアロン ページとして login.php ファイルが必要になる唯一の理由は、ユーザーが JavaScript を有効にしていない場合です。ただし、ログイン ページは JavaScript がないと正しく動作しません。JavaScript を使用していないユーザーは、サイトに登録できません

スタンドアロンの login.php ページをコーディングして、javascript がなくても問題なく動作するようにし、タブ機能を完全にコードで追加する必要があります。login.php スタンドアロン ページに JavaScript は必要ありません。そのページにそのままアクセスするユーザーは、JavaScript を有効にしないためです。

JavaScript を使用せずにページを機能させる簡単な方法 - #Register および #Login div の両方に最初に「show」クラスを設定します。次に、上記の jQuery コードの最初の部分を次のように変更します。

var $gallery = $('#gallery');
$gallery.find('#Register').removeClass('show').addClass('hide');
var $titles = $gallery.find('div[title]');

長くなりましたが、参考になれば幸いです。問題がある場合はお知らせください。

于 2011-11-12T17:54:01.740 に答える