Photoset-grid + lightbox在点击时打开错误的图像

时间:2013-09-03 14:09:37

标签: javascript jquery html tumblr photo-gallery

我正在使用Stylehatch的'Photoset-grid.js'和'view.js'

除了这个事实外,它似乎有用:当我点击多图像行中最右边的图像时,它会打开左图像。

看看我的意思:http://test-theme-one.tumblr.com/

我呈现的HTML看起来像这样(我去了safari并点击了“inspect element”,并在我的测试博客上复制了html for photoset帖子)我不明白它是如何设置的,我虽然我有它一个锚会将每个图像包裹在照片集中吗?

<div class="photoset-grid" data-layout="3" style="width: 100%;" data-width="500">
<a href="http://31.media.tumblr.com/4738e9e1fe4f307b7c7313bcf96766a6/tumblr_msk013TnG61syxzvzo2_500.png" class="view" rel="60178651810" title="help">
    <div class="photoset-row cols-3" style="clear: left;display: block;overflow: hidden;height: 80px;">
        <div class="photoset-cell" style="float: left;display: block;line-height: 0;box-sizing: border-box;width: 33.3%;padding-right: 2.5px;">
            <img src="http://31.media.tumblr.com/4738e9e1fe4f307b7c7313bcf96766a6/tumblr_msk013TnG61syxzvzo2_500.png" alt="" style="width: 100%;height: auto;margin-top: 0px;">
        </div>

        <div class="photoset-cell" style="float: left;display: block;line-height: 0;box-sizing: border-box;width: 33.3%;padding-right: 2.5px;padding-left: 2.5px;">
            <img src="http://31.media.tumblr.com/b421d5cbc68a1f63091492cc95cf879e/tumblr_msk013TnG61syxzvzo3_500.jpg" alt="" style="width: 100%;height: auto;margin-top: -84.5px;">
        </div>

        <div class="photoset-cell" style="float: left;display: block;line-height: 0;box-sizing: border-box;width: 33.3%;padding-left: 2.5px;">
            <img src="http://25.media.tumblr.com/2a4e3311cad4a928b49460b9ed6fda1e/tumblr_msk013TnG61syxzvzo1_500.png" alt="" style="width: 100%;height: auto;margin-top: 0px;">
        </div>

    </div>
</a>

<a href="http://31.media.tumblr.com/b421d5cbc68a1f63091492cc95cf879e/tumblr_msk013TnG61syxzvzo3_500.jpg" class="view" rel="60178651810" title="me"></a>

<a href="http://25.media.tumblr.com/2a4e3311cad4a928b49460b9ed6fda1e/tumblr_msk013TnG61syxzvzo1_500.png" class="view" rel="60178651810" title="please ;)"></a>
</div>

1 个答案:

答案 0 :(得分:1)

问题在于,Photoset Grid并非真正设计用于模板工作。需要这个模板:

 {block:Photos}
      <a href="{PhotoURL-500}" class="view" rel="{PostID}">
            <img src="{PhotoURL-500}" alt="{PhotoAlt}"/>
      </a>
 {/block:Photos}

全力以赴&lt; img&gt;标记并复制它们 - 行中每个图像一个。它产生了这个HTML:

<a class="view" ... >
    <div class="photoset-row cols-3" ...>
        <div class="photoset-cell" ...>
            <img ...>
        </div>
        <div class="photoset-cell" ...>
            <img ...>
        </div>
        <div class="photoset-cell" ...>
            <img ...>   
        </div>
    </div>
</a>
<a class="view" ... ></a>
<a class="view" ... ></a>

现在,view.js正在使用锚点/链接来弹出灯箱。它们基本上捕获整个分组的点击事件。在您的模板中,当您尝试将<img>包裹在<a>中时,它会从模板中的<img>中提取<a>标记并将其附加到第一个<a>

如果你正在进行jQuery插件开发,the Photoset-grid code, is pretty clearly bugged围绕第113行(_setupColumns)。

长话短说,你无法使用带有Photoset网格的view.js灯箱。除非某些灵魂出现并修复插件。