【问题标题】:Changing img src attr issues更改 img src attr 问题
【发布时间】:2016-05-12 12:13:40
【问题描述】:

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

话虽如此,在用户单击缩略图并出现主 div img 后,它会徘徊......我所说的徘徊是指,例如,如果用户关闭 div 并重新打开它或其他div 就像它一样,最后一张图片显示(停留)它不应该在主 div 中。相反,它应该在主 div 中显示第一个缩略图 img...

感谢任何建议,以下是我目前拥有的(或至少一部分)。还有很多,但下面是给我带来麻烦的主要内容......

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

因此,当用户单击该缩略图并且该缩略图图像被重写以使其可以显示在主 div“t_main_screenshot”中时,一切都很好......但是,如果用户单击“t_1 " 等 div,并打开另一个 "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', '');
    });
});

【问题讨论】:

  • 所以我会重申我的理解:你有带图像的 div 和 1 个主 div。单击这些 div 会将其图像设置为主。但是当用户单击第二个 div 时,此图像不会更新。我说的对吗?
  • 关闭。我编辑了我的原始帖子。希望通过这样做,它更容易理解......
  • 尝试过先替换选中的图片,然后再做fadeIn()css()
  • BCoder,我想我需要在某处使用if/else 声明,但我不完全确定如何完成此操作...
  • 试试这个:$(this).attr('src',thumbNail.replace('-thumbnail', '')).fadeIn().css('animation','scale-in .75s ease-in 0s forwards');

标签: javascript jquery html image


【解决方案1】:
$('a.screenshots_1').click(function() {
    $('.t_main_screenshot img').find('img').attr('src' , "");
});

这将帮助您在模态屏幕截图图标单击时初始化主屏幕截图。

【讨论】:

  • 你的代码不是通用的同时你尝试上面的代码我会找到你的代码使其更通用
  • 这行不通,你说的不一般是什么意思?
  • 您正在使用 t_1, t_2 ... 每次打开一个新模态时有这么多类。而不是这个地方一个通用模态,并且在每次单击时将新图像附加到它,从而破坏先前附加的图像。因此,每次单击屏幕截图链接时,都会启动相同的模式并使用不同的图像集。这将动态附加到它。
  • 这会解决很多问题。您可以根据需要创建任意数量的模式。其次,将解决您之前出现的模态图像的问题(在打开新模态之前,您将删除其中的所有图像)。第三它将使代码美观。
【解决方案2】:

试试这个代码:

$('.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', '');
	});
});

当您直接在 .t_main_screenshot 类上进行更新时。所以它会更新所有的地方,在这种情况下是你所有的模态 .t_1, .t_2, ...等。

【讨论】:

  • 这非常接近!但现在,我忽略了一些事情......缩略图的active 状态的removeClassaddClass 似乎没有正常工作......
  • 您可以为每个容器的第一个缩略图设置默认的active
  • 你到底是什么意思?我在我的 html 文件中每个模态叠加层的第一个缩略图图像上都有说明...如果我不单击任何模态叠加层中的任何缩略图图像,则活动状态有效,但是当我这样做时,它似乎不需要应用...例如,打开任何第一个叠加层,选择一个缩略图图像 - 事情按预期工作 - 但是当您关闭并打开另一个叠加层时,active 状态(即使在 html 中提到)似乎不想应用自己...
  • 顺便说一句,我选择了你的答案作为正确的答案,因为它解决了我的第一个问题!我要感谢您帮助我解决这个问题...
  • 想通了...而不是使用$('.t_thumbnail').removeClass('active'); $(this).addClass('active'); - 我将这两行改为:$(this).addClass('active').siblings().removeClass('active');,它现在似乎可以工作了!
猜你喜欢
  • 2011-08-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-05-23
  • 1970-01-01
  • 2018-09-15
  • 2012-05-26
相关资源
最近更新 更多