更改图像src attr

时间:2016-01-31 08:14:35

标签: javascript jquery html image

寻找一些方向。

在当前的迭代中,我有它,如果用户点击图像缩略图,缩略图图像显示在不同的div(主div),并且这样做,它重写主div img src attr *更新:使用缩略图img attr减去“-thumbnail”。这部分很好,或者至少我相信它是。

话虽如此,在用户点击缩略图并显示主div img之后,它仍然存在...而且我的意思是,例如,如果用户关闭div并重新打开它或另一个div就像它一样,最后一张图像显示(停留)它不应该在主div中。相反,它应该显示主div中的第一个缩略图img

任何建议都值得赞赏,以下是我目前拥有的建议(或至少是其中的一部分)。还有更多,但下面是给我带来麻烦的主要东西......

* update :HTML部分位于名为“t_1”的div类中。我有24个......“t_1”,“t_2”,“t_3”。在这个课程中,我使用相同的div类在下面发布了所有内容。唯一的区别是img标签中的文件夹名称。

因此,当用户点击该缩略图并重写该缩略图图像以便它可以显示在主div“t_main_screenshot”中时,一切都很好......但是,如果用户点击了“t_1” “等divs,并打开另一个”t_2“,之前点击的最后一个图像缩略图显示在主div(t_main_screenshot)而不是第一个图像缩略图中,应该是”t_2“......

希望这在清晰度方面要好一些......这很难解释。

HTML:

<div class="t_main_screenshot">
    <img src="_framework/images/slides/simplicity/2.png" alt="" title="" />
</div>

<div class="t_thumbnail_wrapper">
    <div class="t_thumbnail active">
        <img src="_framework/images/slides/simplicity/2-thumbnail.png" alt="" title="" />
    </div>
    <div class="t_thumbnail">
        <img src="_framework/images/slides/simplicity/4-thumbnail.png" alt="" title="" />
    </div>
    <div class="t_thumbnail">
        <img src="_framework/images/slides/simplicity/6-thumbnail.png" alt="" title="" />
    </div>
</div>

JS / JQuery:

$('.t_thumbnail').click(function() {
    $('.t_thumbnail').removeClass('active');
    $(this).addClass('active');

    var thumbNail = $(this).find('img').attr('src');

    $('.t_main_screenshot img').fadeOut(0, function() {
        $(this).fadeIn().css('animation','scale-in .75s ease-in 0s forwards')[0].src = thumbNail.replace('-thumbnail', '');
    });
});

3 个答案:

答案 0 :(得分:0)

您的问题不明确,但我认为您的意思是当用户点击两次这么快时,您会看到一个闪光灯......

那是因为您使用的是.fadeOut().fadeIn()

因此,要解决此问题,您可以使用.stop()方法在开始新动画之前停止上一个动画

更多详情:https://api.jquery.com/stop/

根据问题更新

问题在于:$('.t_main_screenshot img').fadeOut(0, function() {

您必须选择最接近的t_main_screenshot

正确的方式:

$(this).closest('.t_thumbnail_wrapper')
       .siblings('.t_main_screenshot')
       .find('img').fadeOut(0

让我知道这是否有效......

答案 1 :(得分:0)

$('.t_thumbnail').click(function() {
    $('.t_thumbnail').removeClass('active');
    $(this).addClass('active');

    var thumbNail = $(this).find('img').attr('src');
    var res = thumbNail.substring(1, thumbNail.indexOf("-"));
    res+=".jpg";

    $('.t_main_screenshot img').fadeOut(0, function() {
        $(this).fadeIn().css('animation','scale-in .75s ease-in 0s forwards')[0].src = res;
    });
});

答案 2 :(得分:0)

最后想出了答案:

$('.t_thumbnail').click(function() {
    $('.t_thumbnail').removeClass('active');
    $(this).addClass('active');

    var thumbNail = $(this).find('img').attr('src');

    $(this).parent().parent().siblings().find('.t_main_screenshot').children('img').fadeOut(0, function() {
        $(this).fadeIn().css('animation','scale-in .75s ease-in 0s forwards')[0].src = thumbNail.replace('-thumbnail', '');
    });
});