我写了jQuery的这个相当简单的灯箱式功能:jQuery的.load()多个负载后减慢
//LIGHTBOX FUNCTION
$(document).ready(function() {
$('.litebox').click(function(event) {
if ($('.lightbox_bg').length > 0) {
$('.lightbox_content').empty();
$('.lightbox_bg').empty();
var link = $(this).attr('href');
$('.lightbox_bg').fadeIn('slow');
$('.lightbox_content').fadeIn('slow');
$('.lightbox_content').load(link);
event.preventDefault();
} else {
$("body").append("<div class='lightbox_bg'></div>");
$("body").append("<div class='lightbox_content'></div>");
var link = $(this).attr('href');
$('.lightbox_bg').fadeIn('slow');
$('.lightbox_content').fadeIn('slow');
$('.lightbox_content').load(link);
event.preventDefault();
}
});
$("a#close-panel").click(function() {
$('.lightbox_content').fadeOut(300).empty();
$('.lightbox_bg').fadeOut(300).empty();
});
});
我加入了.empty尝试清空div的数据,但如果你打开在第四次连接后,它会减慢速度,在第六次或第七次之后,它会几乎崩溃浏览器。 我对此很新。我如何完全摆脱旧数据或div,以便它不会放慢速度。我不想刷新浏览器页面。如果我刷新它可以解决问题,但必须有更优雅的解决方案。
任何帮助,将不胜感激。
谢谢!
克雷格
编辑:
行,所以我简化了代码一点,并增加了一些警报,看看发生了什么事。这是新的代码。
//Lightbox Function
$(document).ready(function(){
$('.litebox_edit').click(function(event){
var link = $(this).attr('href');
if($('.lightbox_bg').length == 0){
alert('No box');
$("body").append("<div class='lightbox_bg'></div>");
$("body").append("<div class='lightbox_content'></div>");
}
alert('box exists');
$('div.lightbox_bg').fadeIn(300);
$('div.lightbox_content').fadeIn(300).load(link);
event.preventDefault();
});
$("a#close-panel").click(function(){
$('div.lightbox_content').fadeOut(300);
$('div.lightbox_bg').fadeOut(300);
});
});
所以会发生什么是你第一次点击一个链接,它说戒备“无盒”单击确定,然后它说:“存在盒”警报,然后它显示收藏夹。
然后你关闭这个盒子。现在,当你再次单击链接时,它表示Box存在,然后单击确定,然后再次显示“框存在”,然后显示该框。
然后,第三次点击链接时,它会显示“框已存在”3或4次,并且每次关闭该框并重新点击链接时,该链接都会不断增加。
将.lightbox_bg中的标签更改为#lightbox_bg没有区别。
任何想法?我必须以某种方式创建一个循环。但我不知道如何。
谢谢。
克雷格
使用萤火虫检查ajax请求。任何递归正在发生 – Gowri