在Jquery中,通过追加函数以指数形式添加Div
Divs are added exponentially with append funcion in Jquery
我有一个jquery灯箱,但导航不太好用。我向body标记添加了带有append功能的灯箱,但当我单击下一个箭头时,添加到body标记的灯箱会成倍增加。一开始我可以看到下一个项目,但之后我得到了第四个。我得到了这条线:1,2,4,8,16。
lightboxdiv只向body标记添加了一次的函数中需要更改什么?
$(document).ready(function() {
var item, img, large_img, imgtag;
var doc = $(document);
$("#lightbox li").click(function() {
item = $(this);
img = item.find("img");
large_img = new Image();
large_img.src = img.attr("data-large") ? img.attr("data-large") : img.attr("src");
$("#lightbox li.active").removeClass("active");
item.addClass("active");
var gallery = '<div class="gallery"><span class="galleryclose"></span><div class="gallerycontent"><div class="galleryimg">' + large_img + '</div></div></div>';
var controls = '<span class="previmg"></span><span class="nextimg"></span>';
$(gallery).appendTo("body");
$(large_img).load(function() {
$(".gallerycontent").html(function() {
imgtag = '<div class="galleryimg"><img src="' + large_img.src + '" style="opacity: 0; " /><span class="previmg"></span><span class="nextimg"></span></div>';
$(".gallerycontent").html(imgtag);
$(".gallerycontent img").fadeTo(600, 1);
})
})
doc.on("click", ".previmg", function() {navigate(-1)});
doc.on("click", ".nextimg", function() {navigate(1)});
doc.on("click", ".galleryclose", function(){ navigate(0) });
function navigate(direction){
if (direction == -1){
$("#lightbox li.active").prev().trigger("click");
}
else if (direction == 1){
$("#lightbox li.active").next().trigger("click");
}
else if (direction == 0){
$("#lightbox li.active").removeClass("active");
$(".gallery").fadeOut(300, function() { $(this).remove(); });
}
}
})
});
.append()
每次运行时都会不断添加元素。在追加新元素之前,需要先remove()
旧元素。
这样做:
$('.gallery').remove(); // add this line
var gallery = '<div class="gallery"><span class="galleryclose"></span><div class="gallerycontent"><div class="galleryimg">' + large_img + '</div></div></div>';
var controls = '<span class="previmg"></span><span class="nextimg"></span>';
$(gallery).appendTo("body");
每次单击li,都会向所有元素添加更多的单击事件。
- 第一次点击-添加了一次点击事件
- 第二次点击-添加新点击加上您有第一次点击
- 第三次点击-添加新点击加上您有第二次点击和第一次点击
这就是为什么在点击事件中添加点击事件是个坏主意。
相关文章:
- 添加文字和评论功能更新Div
- 点击后隐藏潜水?(但如果Div是一面旗帜呢?)
- 使用JavaScript动态插入DIV的成本有多高
- DIV并排,位置不正确
- Div根据<选择>菜单
- Href:当前DIV中的目标ID
- Onchange没有'不要显示或隐藏Div
- 绝对定位不适用于Javascript DIV
- 在Rails中更新Div,而不更改更新请求后的视图
- how to convert html <div> to pdf
- 如何在不影响其他元素的情况下扩展DIV
- 使用jQuery在页面上浮动DIV
- 如何通过点击机身上的任何位置来关闭弹出的DIV
- 单击按钮时Div Increment
- 只从DIV删除图像,而不是整个网站
- 禁用Tab键以进行具有特定Div ID的输入
- 根据CHECKBOX输入值动态更新DIV信息
- 为什么“outerHTML”更改的DIV仍然没有响应
- 在Jquery中,通过追加函数以指数形式添加Div
- 隐藏元素" below "低z指数的Div