【问题标题】:Swapping images and captions at same time同时交换图像和标题
【发布时间】:2013-03-24 16:37:49
【问题描述】:

我有一个图片库,我正在努力制作到目前为止,它运行良好。我的问题是,无论我如何尝试,当我使用 javascript 将它们换出时,我都无法让每个图像都有自己的标题。现在,在有人为这个问题对我感到不满之前,我已经在这里查看并发现有些人如何使用 html 添加标题,但是当我交换图像时,它就不起作用了。我想也许可以创建一个空的 div 并使用 javascript 插入 html 文本,但我怎样才能加载与适当图片匹配的标题?数组是这里唯一的选择吗?这是我的页面。

My site

我将“照片” div 留空,以便可以将图像加载到其中。到目前为止一切正常。只是对字幕感到困惑。

这里是javascript代码

$('#gallery img').each(function(i) {
    var imgFile = $(this).attr('src');
    var preloadImage = new Image();
  var imgExt = /(\.\w{3,4}$)/;
  preloadImage.src = imgFile.replace(imgExt,'_h$1');

    $(this).hover(
        function() {
            $(this).attr('src', preloadImage.src);
        },
        function () {
        var currentSource=$(this).attr('src');
            $(this).attr('src', imgFile);
    }); // end hover
}); // end each




$('#gallery a').click(function(evt) {
evt.preventDefault();   
var imgPath = $(this).attr('href');
var oldImage = $('#photo img');
var newImage = $('<img src=" ' + imgPath + ' ">');
newImage.hide();
$('#photo').prepend(newImage);
newImage.fadeIn(1000);
oldImage.fadeOut(1000,function(){
$(this).remove();
});
});
$('#gallery a:first').click();

还有我的html

<div id="main">         <!-- Main Content -->

<div id="photo">
</div>

<div id="gallery">
<a href="images/home1_h.jpg"><img src="images/home1.jpg" alt="home 1"></a>
<a href="images/home2_h.jpg"><img src="images/home2.jpg" alt="home 2"></a>
<a href="images/home3_h.jpg"><img src="images/home3.jpg" alt="home 3"></a>
<a href="images/home4_h.jpg"><img src="images/home4.jpg" alt="home 4"></a>
<a href="images/home5_h.jpg"><img src="images/home5.jpg" alt="home 5"></a>
<a href="images/home6_h.jpg"><img src="images/home6.jpg" alt="home 6"></a>
</div>

</div>

【问题讨论】:

  • 我建议您创建一个小提琴,以便人们可以更好地帮助您..
  • 你在说什么标题?
  • 我还没有它,但我想在单击缩略图时加载的“照片” div 中的相应图像中添加标题
  • 我只是想弄清楚我将使用的技术或格式。我在想也许我可以在我的 javascript 中设置一个数组,使每个标题成为一个使用 $(this) 加载的数组?我只是想一定有更好的方法......

标签: javascript jquery image caption


【解决方案1】:

我会这样做

$('#gallery img').click(function(evt) {  
    var elem = $(this);
    var oldImage = $('#photo img');
    $('#photo').prepend($('<img src=" ' + elem.attr('src') + ' ">').hide().fadeIn(1000));
    oldImage.fadeOut(1000,function(){
       $(this).remove();
       $("#caption").html(elem.attr('alt')); // set the caption
    });
});

$('#gallery img:first').trigger('click');

作为 html

<div id="main">         <!-- Main Content -->

<div id="photo">
   <div style="text-align:center" id="caption"></div>
</div>

<div id="gallery">
    <img src="images/home1_h.jpg" alt="home 1">
    <img src="images/home2_h.jpg" alt="home 2">
    <img src="images/home3_h.jpg" alt="home 3">
    <img src="images/home4_h.jpg" alt="home 4">
    <img src="images/home5_h.jpg" alt="home 5">
    <img src="images/home6_h.jpg" alt="home 6">
 </div>

</div>

还有一点css

#gallery img {
     opacity: 0.8;
     cursor: pointer;
}
#gallery img:hover {
     opacity: 1
}

【讨论】:

  • 不会改变标题以匹配图像,所以你不能有 6 个不同的标题
  • 确实如此。它采用图像的alt 属性中的任何内容并将其用作图像标题
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-28
  • 1970-01-01
  • 2021-07-10
  • 1970-01-01
  • 1970-01-01
  • 2011-09-16
相关资源
最近更新 更多