【问题标题】:Need JavaScript to reset an images source back to original when a button is clicked, after going through a script which swapped the source在通过交换源的脚本后,单击按钮时需要 JavaScript 将图像源重置为原始
【发布时间】:2019-01-24 04:24:43
【问题描述】:

我目前正在我的 html 文档中成功运行 JavaScript,这使我可以在悬停在各种缩略图上时交换 main-img。我让这些成功地在各种模式窗口中工作,每个模式窗口中都有不同的图像选择。

我的问题是,在我将鼠标悬停在图像上并且“main-img”更改为相应的缩略图后,当我然后关闭此窗口并打开不同的模式窗口时,“main-img”仍然是在前一个模态窗口中的前一个交换。

这是用于“图像交换”的 javascript:

$(document).ready(function() {
  // Image swap on hover
  $("div#gallery li img").hover(function() {
    $('img#main-img').attr('src', $(this).attr('src').replace('thumb/', ''));
  });
  // Image preload
  var imgSwap = [];
  $("div#gallery li img").each(function() {
    imgUrl = this.src.replace('thumb/', '');
    imgSwap.push(imgUrl);
  });
  $(imgSwap).preload();
});
$.fn.preload = function() {
  this.each(function() {
    $('<img/>')[0].src = this;
  });
}

我试图通过创建一个辅助脚本来解决此问题,该脚本在单击打开相应模态的按钮时为每个模态重新加载或重置“main-img”源到原始源。但是我最近才开始自学 jquery 和 java-script,所以还没有掌握代码的复杂性,所以可能有一些明显的错误或更好的方法来解决这个问题。

$(document).ready(function() {
  // script reset and reload
  $("button.md-trigger").click(
    function(){
      $('img#main-img').attr('src','2.jpg');
  });
});  

如果您需要更多信息,请告诉我。

更新的代码仍然无法正常工作:

        $(document).ready(function() {
        var $mainImg = $('img#main-img');

            $mainImg.data('originalSrc', $mainImg.attr('src'));
            $("div#gallery li img").hover(function(){
            $mainImg.attr('src',$(this).attr('src').replace('thumb/', ''));
        }); 
         $("button.md-trigger").click(
            function(){
                $mainImg.attr('src', $mainImg.data('originalSrc'));
        });
        }

【问题讨论】:

  • 那么按钮点击代码不起作用吗?
  • 否,按钮单击不能以有人参与的方式工作,并且可能有更好的方法来解决这个问题。我需要按钮将 src 重置为原始文件,而不是像我的代码中那样标记为 .jpg。
  • 所以你需要把它存储成原来的样子。很难从代码中看出它会是什么。
  • 我的基本问题是,当从一个模态窗口移动到另一个模态窗口时,前一个窗口中的图像出现在该模态窗口的“main-img”应该出现的位置。

标签: javascript jquery html image


【解决方案1】:

将其保存到数据元素中。

var $mainImg = $('img#main-img');

$mainImg.data('originalSrc', $mainImg.attr('src'));
$("div#gallery li img").hover(function(){
  $mainImg.attr('src',$(this).attr('src').replace('thumb/', ''));
});

然后当你想改回来的时候,用$mainImg.data('originalSrc')替换src

【讨论】:

  • 参考现有代码会去哪里?
  • 如果$('img#main-img').attr('src','2.jpg'); 是您的“重置”行,那么'2.jpg' 将被$mainImg.data('originalSrc') 命令替换,正如我在答案的最后一行中提到的。无论您在哪里尝试重置它,都将在哪里使用该命令。
  • 你能确认这是否正确,它还没有解决我的问题,但它可能实现不正确,因为我已经完全掌握了编写 JavaScript,目前只能做基本的编辑。我已将您代码的第一部分输入到我的 javascript 中,然后将其放入: $("button.md-trigger").click( function(){ $('img#main-img').attr('src ', $mainImg.data('originalSrc')); }); }
  • @ReganBoyce 看起来不错,但是将$('img#main-img').attr('src', $mainImg.data('originalSrc')); 更改为$mainImg.attr('src', $mainImg.data('originalSrc')); $mainImg 已经是元素,因此无需再次查找。
  • 我要将我当前的代码作为编辑添加到我的问题底部,因为不幸的是它仍然无法正常工作,这可能是我犯了另一个错误,感谢您迄今为止的帮助
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-09-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多