【发布时间】: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