【发布时间】:2019-01-25 21:24:34
【问题描述】:
我目前正在尝试让它与 2 个主图像和随附的选择器一起使用,但最终会有多个变体。
我的图像交换脚本有效,将鼠标悬停在缩略图上会将主图像源更改为缩略图的源,但是它会更改两者的主图像,而不仅仅是缩略图所在的那个。
脚本当前同时更改:
$(document).ready(function() {
// Image swap on hover
$("div.product li img").hover(function() {
$('img.productimg').attr('src', $(this).attr('src').replace('thumb/', ''));
});
var imgSwap = [];
$("div.product li img").each(function() {
imgUrl = this.src.replace('thumb/', '');
imgSwap.push(imgUrl);
});
$(imgSwap).preload();
});
$.fn.preload = function() {
this.each(function() {
$('<img/>')[0].src = this;
});
}
当前的html格式分解:
<div class="product" class="gallery">
<div class="mainimage">
<img class="productimg" src="images/1.jpg" class="main-img">
</div>
<div class="imageselector">
<ul>
<li><img class="prod-thumbs" src="images/1.jpg"></li>
<li><img class="prod-thumbs" src="images/2.jpg"></li>
<li><img class="prod-thumbs" src="images/3.jpg"></li>
</ul>
</div>
</div>
<div class="product" class="gallery">
<div class="mainimage">
<img class="productimg" src="images/4.jpg" class="main-img">
</div>
<div class="imageselector">
<ul>
<li><img class="prod-thumbs" src="images/artwork/artist1/modal/4.jpg"></li>
<li><img class="prod-thumbs" src="images/artwork/artist1/modal/5.jpg"></li>
<li><img class="prod-thumbs" src="images/artwork/artist1/modal/6.jpg"></li>
</ul>
</div>
</div>
来自@Terry,我现在已经合并了这个脚本,目的是图像选择器只影响它被分组/最接近的主图像。然而,这似乎已经阻止了悬停功能以任何身份工作,我发现让它工作的唯一方法是将它恢复到以前的脚本。
$(document).ready(function() {
// Image swap on hover
$("div.product li img").hover(function() {
$(this).closest('.imageselector').prev('.productimg').find('img').attr('src', $(this).attr('src').replace('thumb/', ''));
});
var imgSwap = [];
$("div.product li img").each(function() {
imgUrl = this.src.replace('thumb/', '');
imgSwap.push(imgUrl);
});
$(imgSwap).preload();
});
$.fn.preload = function() {
this.each(function() {
$('<img/>')[0].src = this;
});
}
【问题讨论】:
-
您的文档中有重复的 ID:
main-img。这是不允许的。但除此之外,您遇到问题的原因是因为每当您将鼠标悬停在prod-thumbs图像上时,它都会选择所有主要图像。您将需要使用 DOM 遍历,以便拇指图像知道要交换哪个主图像源,例如$(this).closest('.imageselect').prev('.mainimage').find('img') -
@Terry 感谢您的帮助,只是需要澄清一下,我已将 id 更改为 classes,因此那里没有冲突,您编写的脚本在哪里参考了我现有的脚本?
-
这应该在悬停事件的回调中。用我写的替换选择器。
-
我应该注意,我对学习 JavaScript 还很陌生,所以我仍然要熟悉所有的术语并理解脚本的各种复杂性,很抱歉一直询问细节,我当您说“回调和选择器”@Terry 时,不太确定您指的是什么
-
@Terry,答案在下面。没有人愿意在正确的答案中重复你所说的话,所以你必须这样做。
标签: javascript jquery html image