【问题标题】:TypeError: $(...).lightGallery(...).destroy is not a functionTypeError: $(...).lightGallery(...).destroy 不是函数
【发布时间】:2015-09-18 11:11:49
【问题描述】:

我从 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


【解决方案1】:

以下代码适用于我:

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

【讨论】:

  • 这两个方面对我来说很重要,您必须通过数据属性包$("#lightGallery2").data('lightGallery') 访问对象,并且我必须将true 作为参数传递给destroy => $("#lightGallery2").data('lightGallery').destroy(true);
【解决方案2】:

对于销毁 data,您应该将 data 属性添加到您的图库,然后将其销毁,例如,如果您将图库应用于所有链接:

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();

【讨论】:

    【解决方案3】:

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

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

    【讨论】:

      【解决方案4】:

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

      var $lg = $('#lightGallery2');
      
      $lg.lightGallery({
        selector : '.image_gallery',
        videojs: true,
        download: false
      });
      
      $lg.data('lightGallery').destroy(true);
      

      这里是docs

      【讨论】:

      • 您好,感谢您的回复。但它仍然无法正常工作,显示以下错误。类型错误:$lg.data(...) 未定义
      【解决方案5】:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2023-01-14
        • 1970-01-01
        • 2021-02-26
        • 2020-06-29
        • 2020-06-17
        • 1970-01-01
        • 1970-01-01
        • 2020-03-03
        相关资源
        最近更新 更多