我想知道默认配置对象的以下属性的用途。根据github上的文档:
默认情况下,Featherlight会在文档就绪时初始化与defaults.selector匹配的所有元素。如果要阻止这种情况,请在DOM准备好之前将$ .featherlight.defaults.autostart设置为false。
在“Bind featherlight section”下:
然后,它将在此元素上查找targetAttr(默认情况下为“data-featherlight”),并使用其值查找单击元素时将作为灯箱打开的内容。
给出以上两点,我试图:
所以我做了以下事情:
在我的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变量(在onReady()之前):
$.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.
并更新相关位置的代码?
感谢您的帮助和帮助。
答案 0 :(得分:1)
updated README反映了一个人应该使用autoBind
的事实,正如您所发现的那样。
使用最新版本时,除了namespace
和autoBind
之外,您还需要更改targetAttr
选项以获得所需的结果。