0

我正在开发一个 WordPress 主题并将Fancybox 灯箱插件构建到我的代码中。这工作正常,除了一个小问题。

但我会先给你看代码,这样更容易解释。

<dl class='gallery-item'>
    <dt class='gallery-icon'>
        <a href='image.jpg' title='something'><img width="150" height="150" src="image.jpg" class="attachment-thumbnail" title="something" /></a>
    </dt>
    <dd class='wp-caption-text gallery-caption'>
        Description, that should be displayed as title...
    </dd>
</dl>

这是 WordPress 标准画廊的一个画廊项目的输出。我想要做的是将 dd-tags 中的描述附加到灯箱图像标题(此时正在显示 a-tag 的标题,这是一个字母数字字符串 - 不是很用户友好)。

为了给灯箱标题分配一些东西,必须在灯箱的初始化函数中调用以下 javascript。(此代码实际上将第一个.wp-caption-text元素的内容分配给每个图像标题。)

$(document).ready(function(){
    $("a[href$='.jpg'],a[href$='.png'],a[href$='.gif']").attr('rel', 'gallery').fancybox({

    beforeLoad: function(){
        var caption = $('.wp-caption-text').html();
        this.title = caption;
        }
    });
});

上面的代码按预期工作,但这意味着只有wp-caption-text类的第一个元素将分配给灯箱和每个图像。但我只想获取已在灯箱中打开的图像的相应wp-caption-text 。所以我将不得不使用类似$(this)的东西,然后导航到相应的wp-caption-text并将文本分配给标题变量。

我正在努力解决最后一点,希望你能帮助我。这应该不会太难,但我目前没有任何线索。

谢谢
卢卡斯

4

2 回答 2

0

尝试这个

var caption =  $(this).parent().parent().find('.wp-caption-text').html();

这是如果 对应于当前锚点

于 2012-09-21T22:45:25.437 回答
0

如果标记发生变化,这将是稳定的。如果这不起作用,则意味着这this不是我们期望的那样,我们需要弄清楚它是什么。另请注意,我使用 .text()的是.html(). 如果您决定在其中添加一些标记.wp-capition-text (例如,图标或其他东西),这仍然只是抓取文本。

var caption = $(this.element).closest('.gallery-item').find('.wp-caption-text').text();
于 2012-09-21T22:59:02.367 回答