Javascript jquery触发器(';click';)只工作一次

Javascript jquery触发器(';click';)只工作一次,javascript,jquery,lightbox,lightgallery,Javascript,Jquery,Lightbox,Lightgallery,我正在尝试自定义一个名为jQuery lightbox的插件,以实现以下结果: 1-使脚本从文件夹中获取所有图像,使用索引增量作为图像路径 2-单击其他元素后打开灯箱 问题是: 插件只能打开lightbox一次 我正在使用trigger('click')第一次触发它,但是在关闭它并尝试再次单击以重复它之后,它就不起作用了 该插件看起来已被破坏,它只打开一个图像 我希望它在每次单击目标元素时打开灯箱 以下是我的尝试:() $(文档).ready(函数(){ var$lg=$(“#lightgal

我正在尝试自定义一个名为jQuery lightbox的插件,以实现以下结果:

1-使脚本从文件夹中获取所有图像,使用索引增量作为图像路径

2-单击其他元素后打开灯箱

问题是:

插件只能打开lightbox一次

我正在使用
trigger('click')
第一次触发它,但是在关闭它并尝试再次单击以重复它之后,它就不起作用了

该插件看起来已被破坏,它只打开一个图像

我希望它在每次单击目标元素时打开灯箱

以下是我的尝试:()

$(文档).ready(函数(){
var$lg=$(“#lightgallery”);
函数fetchFolderImages(){
var checkImages,endCheckImages;
var-img;
var imgArray=新数组();
var i=1;
var myInterval=setInterval(loadImage,1);
如果($lg.children().length>0){
checkImages=false;
endCheckImages=true;
}否则{
checkImages=true;
endCheckImages=false;
}
函数loadImage(){
如果(检查图像){
checkImages=false;
img=新图像();
img.src=http://sachinchoolur.github.io/lightGallery/static/img/“+i+”.jpg';
img.onload=更多的男性主义者;
img.onerror=无性别歧视者;
}
如果(endCheckImages){
clearInterval(myInterval);
log('function[loadImage]done');
runLightGallery();
返回;
}
}
女性主义者的功能(){
imgaray.push(img);
$lg.附加($(''){
“href”:img.src
}).html(img));
i++;
checkImages=true;
log('function[moreImagesExists]done');
}
性别歧视者的功能(){
endCheckImages=true;
log('function[noImagesExists]done');
}
log('function[fetchfolderimage]done');
}
函数runLightGallery(){
如果($lg.lightGallery()){
//警报(“工作”);
}否则{
//警报(“已销毁”);
$lg.lightGallery({
缩略图:对
});
}
//触发图像上的单击事件以打开灯箱
$lg.children('a')。触发器('click');
//空方法,以为我们可以用
$lg.on('onAfterOpen.lg',函数(事件){
//也许我们可以用这个方法?
});
$lg.on('onCloseAfter.lg',函数(事件){
$lg.children().remove();
$lg.toggle();
//$lg.lightGallery().destroy(true);
});
log('function[runLightGallery]done');
}
$('.gallery项')。每个(函数(){
$(此)。在('单击',函数()上){
$lg.toggle();
fetchFolderImages();
});
});
});

画廊项目1
画廊项目2
画廊项目3

我快速浏览了您的代码,发现您正在加载动态数据 甚至尝试授权, 问题是,在事件绑定的时刻,并不是所有的“a”元素都真正存在以绑定事件

您的触发事件应该类似于

$(document).on('click','#someId a:first-child',function(){

})

LightGallery需要销毁并重新初始化

要销毁LightGallery,请使用此代码
$lg.data('LightGallery')。销毁(true)

资料来源:

$(文档).ready(函数(){
var$lg=$(“#lightgallery”);
函数fetchFolderImages(){
var checkImages,endCheckImages;
var-img;
var imgArray=新数组();
var i=1;
var myInterval=setInterval(loadImage,1);
如果($lg.children().length>0){
checkImages=false;
endCheckImages=true;
}否则{
checkImages=true;
endCheckImages=false;
}
函数loadImage(){
如果(检查图像){
checkImages=false;
img=新图像();
img.src=http://sachinchoolur.github.io/lightGallery/static/img/“+i+”.jpg';
img.onload=更多的男性主义者;
img.onerror=无性别歧视者;
}
如果(endCheckImages){
clearInterval(myInterval);
log('function[loadImage]done');
runLightGallery();
返回;
}
}
女性主义者的功能(){
imgaray.push(img);
$lg.附加($(''){
“href”:img.src
}).html(img));
i++;
checkImages=true;
log('function[moreImagesExists]done');
}
性别歧视者的功能(){
endCheckImages=true;
log('function[noImagesExists]done');
}
log('function[fetchfolderimage]done');
}
函数runLightGallery(){
如果($lg.lightGallery()){
//警报(“工作”);
}否则{
//警报(“已销毁”);
$lg.lightGallery({
缩略图:对
});
}
//触发图像上的单击事件以打开灯箱
$lg.children('a')。触发器('click');
//空方法,以为我们可以用
$lg.on('onAfterOpen.lg',函数(事件){
//也许我们可以用这个方法?
});
$lg.on('onCloseAfter.lg',函数(事件){
$lg.children().remove();
$lg.toggle();
$lg.data('lightGallery')。销毁(真);
});
log('function[runLightGallery]done');
}
$('.gallery项')。每个(函数(){
$(此)。在('单击',函数()上){
$lg.toggle();
fetchFolderImages();
});
});
});

画廊项目1
画廊项目2
画廊项目3

你没有以正确的方式摧毁灯塔

将此用于“onCloseAfter.lg”事件:

$lg.on('onCloseAfter.lg', function(event) {
  $lg.children().remove();
  $lg.toggle();
  //$lg.lightGallery().destroy(true);
  $lg.data('lightGallery').destroy(true);
});

非常感谢穆罕默德,我很感激!:)非常感谢,阿玛,我很感激!:)