編集:
さて、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]');
長くなりましたが、参考になれば幸いです。問題がある場合はお知らせください。