比如我现在又一个页面 a.html ,里面分了上下2个页面 b.html 和 c.html ,分别用 div id='aa' 和 div id='bb' 进行 load 操作。
然后aa和bb 是通过点击一个按钮来加载的,也就是平时是隐藏的。
然后分别在a 和 b中要使用 colorbox 则需要申明引用。如下设置a 和 b.html页面。
<!-- 加入弹窗chart支持 -->
<link rel="stylesheet" href="!-PUBLIC-!/colorbox/css/colorbox.css" />
<script src="!-PUBLIC-!/colorbox/jquery.colorbox.js"></script>
$(document).ready(function () {
$(".ajax").colorbox();
};
<a class='ajax' href="!-ROOT-!/Public/LineChart?item=<{$vo}>&which=0" title=<{$vo}> 历史图"><{$vo}></a>
设置完毕后,点击按钮加载 a.html 然后弹窗出来,看到是正常的。当再点击按钮加载 b.html的时候会发现,colorbox 弹出了2层,也就是需要点击2次取消才能关闭。用户体验很受影响。
昨天测试了很久,发现,只要一个主页面内分多个子页面,每个子页面都要用到colorbox的时候,就会发现这个问题,也就是重复弹出多层。
我也用了colorbox的callback函数进行跟踪,想在opened的时候就ajax的方法设置一个全局变量,然后同时再在同一个opened内进行判断加载为唯一一次,但是无法实现。
$(document).ready(function () {
$(".iframe").colorbox({
onOpen:function(){
var imlog = <{$_SESSION['AddColorBox_mlog']}>;
if (imlog == 1) {
alert('判断111');
jQuery().colorbox.close();
}
else{
alert('判断000');
};
$.post('!-URL-!/Ajax_Set_1',function(jdata){
if(jdata.status==1){
alert(11);
}
});
},
onClosed:function(){
$.post('!-URL-!/Ajax_Set_0',function(jdata){
if(jdata.status==0){
alert(00);
}
});
}
});//
});
很有可能我这样设计页面是有问题的,希望指教,最好详细点···因为我实在太入门了~如果没有办法解决,那么只能每次点开a.html的时候,就‘隐藏’b.html,也就是顺带再 .empty(); 一次,理论上就是销毁多次加载的colorbox来解决了····由于刚从C++这块过来,时间很紧很多细节估计没注意到,还望有人能指点如何解决。
最佳答案
