当弹出页面中包含jquery(我正在使用AJAX并在弹出窗口中包含外部php页面)时,我遇到关闭fancybox弹出窗口的问题。 fancybox的设置如下:
$(".various3").fancybox({
'type' : 'ajax',
'titlePosition' : 'inside',
'transitionIn' : 'none',
'transitionOut' : 'none',
'ajax' : {
type : 'GET'
}
});
弹出窗口有一个“取消”按钮,允许用户关闭弹出窗口(使用jQuery.fancybox.close();)。我必须在弹出页面中包含jquery以允许一些其他功能工作,这可以防止jQuery.fancybox.close();从工作。如果我从弹出页面中删除jquery然后它工作正常,但是我无法弄清楚如何在主页面上引用jquery的实例(我已经尝试过父亲以防万一,虽然我不会想到这应该工作,因为它是一个div而且确实没有)。我尝试过使用:
var localjquery = jQuery.noConflict(true);
弹出页面中的这允许我使用jQuery.fancybox.close();成功关闭弹出窗口但是这会阻止使用$来引用此页面上无法编辑的其他插件所需的jquery。如果我添加
var mainjquery = jQuery.noConflict();
在主页面上的第一个jquery实例后,这显然工作正常,我可以将其称为父节点上的mainjquery,但如果那样尝试
mainjquery.fancybox.close();
在弹出窗口上,它表示mainjquery未定义。
我怀疑这是一个问题,因为多个jquery实例的组合,并通过ajax将一个完全独立的页面加载到div中(而不是使用iframe等,然后我可以使用parent。或类似)。如果有人能够阐明如何从子弹出窗口引用mainjquery引用,或者更好的方式我可以关闭fancybox,那将非常感激。
非常感谢!
戴夫
答案 0 :(得分:0)
最好的办法是测试它是否是一个ajax请求,如果是这样的话,不要包含jquery(或者你已经拥有的任何其他脚本)。
以下是我在php页面上用于执行ajax和常规页面请求的代码示例。
define('IS_AJAX', isset($_SERVER['HTTP_X_REQUESTED_WITH']) &&
strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest');
....
if(!IS_AJAX)
{
//echo your header with scripts
echo $header;
}
//else just echo the contents of the page body
编辑:
如果您需要向head
标记添加内容,则应该为fancybox使用iframe而不是ajax类型。