在FancyBox窗口中显示图像的Alt标题和标题。工作,但为每个图像显示相同的ALT和标题

时间:2011-09-02 作者:Andrew

我已经做了几个小时了,也许这里有人可以帮我:)

基本上,我有一个fancybox图库,可以加载附在帖子上的图像。正如您在下面看到的,我想在fancybox窗口中回显图像的标题或alt标题。目前它可以工作,但它只显示one 这是第一张照片。

我可以很好地将每个图像的alt标题和标题回显到页面上,但在fancybox窗口中使用时会出现问题。有人知道为什么吗?我需要做更多的循环还是什么?感谢您的关注!

<script type="text/javascript">
//<![CDATA[

var $j = jQuery.noConflict();

$j(document).ready(function() {

//fancybox
$j("a[rel=gallery]").fancybox({
    \'transitionIn\'  : \'elastic\',
    \'transitionOut\' : \'elastic\',
    \'easingIn\'      : \'easeOutBack\',
    \'easingOut\'     : \'easeInBack\',
    \'speedIn\'       : 250,
    \'speedOut\'      : 250,
    \'changeSpeed\'   : 250,
    \'overlayShow\'   : false,
    \'titlePosition\'     : \'inside\',
    \'titleFormat\'       : 

    function(title, currentArray, currentIndex, currentOpts) {

        <?php 

        $images = get_children( array(
            \'post_parent\' => $post->ID, 
            \'post_status\' => \'inherit\', 
            \'post_type\' => \'attachment\', 
            \'post_mime_type\' => \'image\', 
            \'order\' => \'ASC\', 
            \'orderby\' => \'menu_order ID\'
        ));

        //caption
        if ($images) {
            foreach($images as $image) {
                $caption = $image->post_excerpt;
            }   
        }

        //alt title
        foreach ($images as $attachment_id => $image) {
            $img_alt = get_post_meta($attachment_id, \'_wp_attachment_image_alt\', true); 
        }    

        ?>

        //here\'s where I\'m trying to echo the caption or alt image for testing
        return \'<?php echo $caption; echo $img_alt; ?><span id="fancybox-title-over"><span class="index">\' + (currentIndex + 1) + \' of \' + currentArray.length + (title.length ? \'</span><span class="fancybox-title">\' + title : \'\') + \'</span>\' + \'<span class="phone"><?php echo $phone; ?></span></span>\';

    }
});

});

//]]>
</script>

2 个回复
最合适的回答,由SO网友:Andrew 整理而成

好的,所以我选择了一个更简单的选择。我把fancybox一个人留下了,所以它还在拉title 属性,但我刚刚更改了如何将标题添加到WordPress的图像中。因此,它不是使用WP图像中的标题,而是使用alt或标题,这取决于我使用的是哪一个。完成并除尘。我还阅读了一些有关currentIndex&;的内容;fancybox并发现其他一些人对此有问题,因此提出了替代解决方案。

SO网友:drebabels

您的问题是foreach循环。。。此处:

 if ($images) {
    foreach($images as $image) {
        $caption = $image->post_excerpt;
    }   
 }
这里:

 //alt title
 foreach ($images as $attachment_id => $image) {
    $img_alt = get_post_meta($attachment_id, \'_wp_attachment_image_alt\', true); 
 } 
基本上,您的$caption和$img\\u alt变量是在循环的每次迭代中设置的,但您没有返回或保存新值。相反,您只是让循环继续运行,而$caption和$img\\u alt变量被设置为下一个值(使循环毫无价值)。

你需要做的就是这样。首先将PHP循环移到回调之外,并将标题和img\\u alt保存到两个新数组中。应该是这样的:

<?php 

    $images = get_children( array(
        \'post_parent\' => $post->ID, 
        \'post_status\' => \'inherit\', 
        \'post_type\' => \'attachment\', 
        \'post_mime_type\' => \'image\', 
        \'order\' => \'ASC\', 
        \'orderby\' => \'menu_order ID\'
    ));

    //caption
    $captions = array();
    if ($images) {
        foreach($images as $image) {
            $captions[] = $image->post_excerpt;
        }   
    }

    //alt title
    $img_alts = array();
    foreach ($images as $attachment_id => $image) {
        $img_alts[] = get_post_meta($attachment_id, \'_wp_attachment_image_alt\', true); 
    }    

    ?> 
现在,将标题和javascript的值输出到页面上的两个隐藏列表中。输出它们的原因是为了我们以后可以使用一些javascript轻松获取文本。

<ol id="captions">
    <?php
    foreach ($captions as $caption){
        echo \'<li>\' . $caption . \'</li>\'; 
    };
    ?>
</ol>
对您的img\\U alts执行与上述相同的操作。

现在,在javascript函数中重写回调函数,使其看起来像这样。在此,我假设“currentIndex”与当前显示图像的索引号匹配:

function(title, currentArray, currentIndex, currentOpts) {

    // get your caption
    var caption = jQuery(\'#captions\').get(currentIndex).text();

    // get your img alt
    var img_alt = jQuery(\'#img_alts\').get(currentIndex).text();

    var html = \'<span class="caption">\' + caption + \'</span>\';
    html += \'<span class="img_alt">\' + img_alt + \'</span>\';

    return html;
}
我还没有检查这段代码是否有效,所以可能会有一些错误,但如果您遵循我的逻辑,像这样的东西应该可以解决您的问题。希望这有帮助。

结束

相关推荐

Jquery in IE, fully messed up

我正在使用nivo slider 在我的一个网站上,滑块在Firefox中看起来很完美,但在IE 7、8中,它的高度增加到1006px,滑块可以工作,但高度增加了很多,我已经停用了所有插件,它的视图仍然相同,但在我的localhost中它也可以在IE中工作,但我无法区分其中的实际问题,这里是网站http://www.marqueehireauckland.net.nz/有人能帮我吗?我的nivo滑块代码是<script type=\"text/javascript\" src=\"<?php