0
$(".various").fancybox({
    maxWidth    : 500,
    maxHeight   : 800,
    fitToView   : false,
    width       : '60%',
    height      : '100%',
    autoSize    : false,
    openEffect  : 'none',
    closeEffect : 'none',
});

<table>

<?php
    while( $row = mysql_fetch_array($query))
    {
       echo "<tr><td><a href='edit.php?id=".$row['pat_id']."' class='various fancybox.ajax'>Edit Product</a></td></tr>"
    }

</table>

私はここでページングを行いました.fancyboxは、最初のページにいるときに正常に動作します. 別のページに移動してEditProductをクリックすると、背景が暗くなり、さらにクリックすると暗くなり続け、通常に戻るにはさらにクリックする必要があります。私はたくさん検索しましたが、解決策は見つかりませんでした。助けてください

4

1 に答える 1

1

「親」ページ「A」(言及しているコードがあるページ)で、「スクリプト」(ヘッドセクションを意味すると思います)セクションで述べたように、ファンシーボックスをロードしました。

これまでのところ、問題はありません。すべて問題ないようです。

問題は、ajax を使用して読み込もうとしているページ "B" にあります。私が正しく推測している場合、そのページ「B」は、その「スクリプト」(ヘッド)セクションにファンシーボックスもロードしています。

そのため、親ページ「A」の開始からいくつかの魔法がすでに発生し、それが「ネストされた」動作を引き起こしている間に、ファンシーボックスはajaxをロードした「B」ページを介して再開始します。

解決策: ajax ページで fancybox を再度読み込まないでください

あなたの問題における私の非常に具体的な推測:

ページ「A」と「B」は同じページ(edit.php)ですか?

ページがそれ自体の別のインスタンスをロードする場合、edit.php が別の「モード」で edit.php をロードしようとするとします。次のようにロードできます。

echo "<tr><td><a href='edit.php?id=".$row['pat_id']."&mode=DISABLE_LOADING_OF_SCRIPTS' class='various fancybox.ajax'>Edit Product</a></td></tr>"

...そしてもちろん、edit.phpのヘッドセクションでチェックを行います...

<head>
<?php if($_POST['mode']!='DISABLE_LOADING_OF_SCRIPTS') { ?>
<script type="text/javascript">

......loading/initiation of fancybox here.......

</script>
<?php } ?>

...そのため、スクリプトは、データを入力する edit.php の「メイン」バージョンにのみロードされます。

その場合、edit.php を使用してすべての作業を行うのも悪い考えだと思います。デバッグが難しく、プログラムの流れをたどることが困難です。編集作業を行うために「producteditor.php」を作成し、データセットを表示するためだけに edit.php を保持します。

于 2013-05-08T17:16:30.860 に答える