TypeError:$(...).lightGallery(...).destroy 不是函数

问题描述 投票:0回答:6

我从 Firefox 收到此错误:

TypeError: $(...).lightGallery(...).destroy is not a function

我正在使用以下插件来播放视频和显示图片库 https://github.com/sachinchoolur/lightGallery.

我想重新初始化 lightGallery,因为我正在使用 ajax 在容器中动态添加元素。它在以前版本的 lightGallery 中运行良好,但在当前版本中不起作用。

我正在使用以下代码。

// destroy previous gallery
$("#lightGallery2").lightGallery({
  selector : '.image_gallery',
  videojs: true,
  download: false
}).destroy();

// re-initialize
$("#lightGallery2").lightGallery({
  selector: '.image_gallery',
  videojs: true,
  download: false
});

请推荐。

谢谢

javascript jquery lightgallery lightgallery-1
6个回答
9
投票

以下代码对我有用:

$lg.on('onBeforeClose.lg',function(event, index, fromTouch, fromThumb){
    try{$lg.data('lightGallery').destroy(true);}catch(ex){};
});

1
投票

对于销毁数据,您应该向图库添加数据属性,然后销毁它,例如,如果您将图库应用于所有链接:

var myGallery = 'body',
    lightgallery = function() {
         $( myGallery ).attr('data-lightGallery', '1');
         $( myGallery ).lightGallery({selector: 'a[href$=".jpg"], a[href$=".jpeg"], a[href$=".png"], a[href$=".gif"]'});
    };

然后:

$( myGallery ).data('lightGallery').destroy(true);
lightgallery();

0
投票

如果它像大多数插件/小部件一样编写,您应该像这样调用 destroy 方法。

$("#lightGallery2").lightGallery("destroy");

0
投票

您必须使用以下方法来销毁lightgallery 1.2.x版本。

var $lg = $('#lightGallery2');

$lg.lightGallery({
  selector : '.image_gallery',
  videojs: true,
  download: false
});

$lg.data('lightGallery').destroy(true);

这是文档


0
投票

我只是创建了一个全局变量。它允许我执行所需的功能。

var PLUGIN; // global variable
...
if(PLUGIN) PLUGIN.data('lightGallery').destroy(true); // destroy 
PLUGIN = $("#lightGallery2").lightGallery();

0
投票

如果您想在销毁 lightGallery 后立即重新初始化它,请仅在

destroy
过程完成后对其进行初始化。大多数时候你可以使用
refresh
方法。

const plugin = lightGallery();
// Delete or add children, then call
plugin.refresh();
© www.soinside.com 2019 - 2024. All rights reserved.