featherlight.js tagetAttr和autostart功能

时间:2015-03-08 18:07:37

标签: featherlight.js

我想知道默认配置对象的以下属性的用途。根据github上的文档:

  

默认情况下,Featherlight会在文档就绪时初始化与defaults.selector匹配的所有元素。如果要阻止这种情况,请在DOM准备好之前将$ .featherlight.defaults.autostart设置为false。

在“Bind featherlight section”下:

  

然后,它将在此元素上查找targetAttr(默认情况下为“data-featherlight”),并使用其值查找单击元素时将作为灯箱打开的内容。

给出以上两点,我试图:

  1. 停止加载并在启动时自行初始化羽毛灯
  2. 使用data-my-lightbox-xxx属性,而不是使用data-featherlight-xxx属性。
  3. 所以我做了以下事情:

    在我的javascript中,在onReady()函数之前,我添加了:

    $.featherlight.defaults.autostart=false;
    

    $.featherlight.defaults.targetAttr='data-my-lightbox';
    

    但是,将自动启动设置为false似乎没有任何效果。如果我查看源代码,我也看不到任何引用。但是有一个'autoBind'变量。

    接下来,我尝试在锚标记上设置data-my-lightbox属性:

    <a href="#" data-my-lightbox="my-image-gallery.html" ...> 
    

    并尝试过:

    <a href="my-image-gallery.html" data-my-lightbox="iframe" ...>
    

    但似乎也被忽略了。直到我做了以下事情:

    $('[data-my-lightbox]').featherlight();
    

    以某种看似合乎逻辑的方式,但我的印象是,如果我在onReady之前更改默认属性,其余部分将会落实到位。然后我发现了autoBind变量(在o​​nReady()之前):

    $.featherlight.autoBind='[data-my-lightbox]';
    $.featherlight.defaults.targetAttr='data-my-lightbox';
    

    无需显式的$(..)。featherlight构造即可工作。到目前为止一切都很好。

    但是,似乎iFrame的宽度/高度属性仍然应该是data-featherlight-xxxxx而不是data-my-lightbox-xxxx ...也许归因于源代码中的以下行:

    var match = this.name.match(/^data-featherlight-(.*)/);
    

    如果我将其更改为:

    ,该怎么办?
    var matchRegEx = RegExp("^"+targetAttr+"-(.*)"); 
    var match = this.name.
    

    并更新相关位置的代码?

    感谢您的帮助和帮助。

1 个答案:

答案 0 :(得分:1)

updated README反映了一个人应该使用autoBind的事实,正如您所发现的那样。

使用最新版本时,除了namespaceautoBind之外,您还需要更改targetAttr选项以获得所需的结果。