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”(包含您提到的代码的页面)中,您已经加载了 fancybox,正如您在“脚本”(我猜您的意思是头部)部分中所说的那样。

到目前为止,没问题,一切看起来都很好。

问题出在您尝试使用 ajax 加载的页面“B”中。如果我猜对了,那个页面“B”也在它的“脚本”(head)部分加载了fancybox。

因此,fancybox 通过 ajax 加载的“B”页面重新启动,而父页面“A”启动已经发生了一些魔法,这导致了“嵌套”行为。

解决方案:不要在你的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 回答