编辑:示例 - http://jsfiddle.net/JWx7z/9/
我正在使用一个灯箱插件https://github.com/premasagar/nitelite而我正在黑客攻击它以使其表现得如我所想。
灯箱由两个元素组成:叠加层(浅色透明窗口)和内容窗口。
通常,当灯箱关闭时,叠加层会淡出并移除。打开灯箱时,它会被添加并淡入。
然而,当从灯箱移动到另一个灯箱时,这使得转换不合需要。我已经黑了它,所以旧的叠加层仍然存在,如果我们在两个灯箱之间移动,新的叠加层将被中止,所以它只是内容窗口的变化。
这当然意味着叠加层是灯箱到当前内容窗口的单独实例。这反过来意味着当我尝试通过点击叠加来关闭灯箱时,只删除叠加层 - 将内容窗口保留在我的页面上。
...
$(this.overlay)
.bind('add', function() {
this.node
.one('click', function(){
lb.close();
});
});
注意:灯箱的每个实例都称为lb。
我可以通过在关闭按钮上添加一个人工点击来删除此窗口:
$('#lightbox p.close a').click();
但是后来有一些代表,因为lb的一些残余仍然存在 - 例如,如果我想打开一个新的灯箱,它认为灯箱已经存在,我们正在两者之间移动,所以不添加叠加,因为它认为那里已经存在一个。
如何处理它,以便在点击叠加层时关闭所有lb实例?
由于
编辑:如果来自灯箱,则中止添加叠加的代码
...
open: function(contents, transition){
var lb = this;
if (transition !== 0) {
this.overlay.add();
}
...
答案 0 :(得分:0)
您可以在关闭时将覆盖点击功能更改为fadeOut
.nitelite-lightbox-container
:
$(this.overlay)
.bind('add', function(){
this.node
.one('click', function(){
...
$(this).next('.nitelite-lightbox-container').fadeOut();
lb.close();
});
});
当您重新打开灯箱时,它会警告“lb已经存在”,但它仍然可以正常运行。