如何使用 jquery 更改鼠标悬停在 div 上时的图像 - 重构
How to change the image on mouse hover on a div using jquery - Refactoring
我有下面的代码,它在 img 标签上有进度图像。
我有 4 div 下面。在 div 的鼠标悬停时,我正在相应地更改图像。
我使用 jQuery 实现了这一点。但是我必须通过使用 jQuery 文件中的图像路径来实现这一点。
是否有其他替代方法可以在不使用 jQuery 文件中的图像路径的情况下实现此目的。 (使用 show/hide )或任何其他在悬停时动态显示图像的最佳方法。我的目的是从 jQuery 文件中删除图像路径。
$(document).ready(function() {
$("#image1").mouseover(function() {
$("#srcImage").attr('src', 'assets/images/progress.svg');
});
$("#image2").mouseover(function() {
$("#srcImage").attr('src', 'assets/images/progressOne.svg');
});
$("#image3").mouseover(function() {
$("#srcImage").attr('src', 'assets/images/progressTwo.svg');
});
$("#image4").mouseover(function() {
$("#srcImage").attr('src', 'assets/images/progressThree.svg');
});
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="imageContent">
<img src='assets/images/progress.svg' id="srcImage" />
</div>
<div class="row">
<div class="col-lg-3" id="image1">
Step 1
</div>
<div class="col-lg-3" id="image2">
Step 2
</div>
<div class="col-lg-3" id="image3">
Step 3
</div>
<div class="col-lg-3" id="image4">
Step 4
</div>
</div>
</div>
你可以按照下面的代码,你可以让图像源在 hover
事件而不是 mouseover
事件上替换为 div 数据属性,因为 mouseover
随时触发鼠标指针移动,它将继续更换不必要的图像
将 image
class 添加到每个 div 并将每个 div 的悬停事件处理程序附加到 class image
并读取其数据属性以替换为 srcIamge
这样您在添加/删除任何步骤时都不需要更新您的 jquery 脚本 div。
注意:我给 div 设置了 50px 的高度和背景颜色,以分别识别每个 div。
$(document).ready(function() {
$(".row div.image").hover(function() {
console.log($(this).data('img'));
$("#srcImage").attr('src', $(this).data('img'));
}, function(){
console.log('hover out');
});
})
.image {
padding: 10 10 10 10;
background-color: blue;
height: 50px;
border: 1px solid red;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="imageContent">
<img src='assets/images/progress.svg' id="srcImage" />
</div>
<div class="row">
<div class="col-lg-3 image" id="image1" data-img="assets/images/progress.svg">
Step 1
</div>
<div class="col-lg-3 image" id="image2" data-img="assets/images/progressOne.svg">
Step 2
</div>
<div class="col-lg-3 image" id="image3" data-img="assets/images/progressTwo.svg">
Step 3
</div>
<div class="col-lg-3 image" id="image4" data-img="assets/images/progressThree.svg">
Step 4
</div>
</div>
您可以将图像放在不同的 div 中,在启动时隐藏 div,当鼠标移到包含步骤的 div 上时显示 div。
<!DOCTYPE html>
<meta charset="utf-8"/>
<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
<script>
$(document).ready(function() {
$("#image1").mouseover(function() {
$("#img1").show();
$("#img2").hide();
$("#img3").hide();
$("#img4").hide();
});
$("#image2").mouseover(function() {
$("#img2").show();
$("#img1").hide();
$("#img3").hide();
$("#img4").hide();
});
$("#image3").mouseover(function() {
$("#img3").show();
$("#img2").hide();
$("#img1").hide();
$("#img4").hide();
});
$("#image4").mouseover(function() {
$("#img4").show();
$("#img1").hide();
$("#img3").hide();
$("#img2").hide();
});
});
</script>
<style type="text/css">
.images {
display: none;
}
#img1 {display: block}
</style>
</head>
<body>
<div class="row">
<div class="col-lg-3" id="image1">
Step 1
</div>
<div class="col-lg-3" id="image2">
Step 2
</div>
<div class="col-lg-3" id="image3">
Step 3
</div>
<div class="col-lg-3" id="image4">
Step 4
</div>
<div class="images" id = "img1">
<img src="https://via.placeholder.com/150">
</div>
<div class="images" id = "img2">
<img src="https://via.placeholder.com/200">
</div>
<div class="images" id = "img3">
<img src="https://via.placeholder.com/250">
</div>
<div class="images" id = "img4">
<img src="https://via.placeholder.com/300">
</div>
</div>
</body>
</html>
我有下面的代码,它在 img 标签上有进度图像。 我有 4 div 下面。在 div 的鼠标悬停时,我正在相应地更改图像。 我使用 jQuery 实现了这一点。但是我必须通过使用 jQuery 文件中的图像路径来实现这一点。 是否有其他替代方法可以在不使用 jQuery 文件中的图像路径的情况下实现此目的。 (使用 show/hide )或任何其他在悬停时动态显示图像的最佳方法。我的目的是从 jQuery 文件中删除图像路径。
$(document).ready(function() {
$("#image1").mouseover(function() {
$("#srcImage").attr('src', 'assets/images/progress.svg');
});
$("#image2").mouseover(function() {
$("#srcImage").attr('src', 'assets/images/progressOne.svg');
});
$("#image3").mouseover(function() {
$("#srcImage").attr('src', 'assets/images/progressTwo.svg');
});
$("#image4").mouseover(function() {
$("#srcImage").attr('src', 'assets/images/progressThree.svg');
});
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="imageContent">
<img src='assets/images/progress.svg' id="srcImage" />
</div>
<div class="row">
<div class="col-lg-3" id="image1">
Step 1
</div>
<div class="col-lg-3" id="image2">
Step 2
</div>
<div class="col-lg-3" id="image3">
Step 3
</div>
<div class="col-lg-3" id="image4">
Step 4
</div>
</div>
</div>
你可以按照下面的代码,你可以让图像源在 hover
事件而不是 mouseover
事件上替换为 div 数据属性,因为 mouseover
随时触发鼠标指针移动,它将继续更换不必要的图像
将 image
class 添加到每个 div 并将每个 div 的悬停事件处理程序附加到 class image
并读取其数据属性以替换为 srcIamge
这样您在添加/删除任何步骤时都不需要更新您的 jquery 脚本 div。
注意:我给 div 设置了 50px 的高度和背景颜色,以分别识别每个 div。
$(document).ready(function() {
$(".row div.image").hover(function() {
console.log($(this).data('img'));
$("#srcImage").attr('src', $(this).data('img'));
}, function(){
console.log('hover out');
});
})
.image {
padding: 10 10 10 10;
background-color: blue;
height: 50px;
border: 1px solid red;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="imageContent">
<img src='assets/images/progress.svg' id="srcImage" />
</div>
<div class="row">
<div class="col-lg-3 image" id="image1" data-img="assets/images/progress.svg">
Step 1
</div>
<div class="col-lg-3 image" id="image2" data-img="assets/images/progressOne.svg">
Step 2
</div>
<div class="col-lg-3 image" id="image3" data-img="assets/images/progressTwo.svg">
Step 3
</div>
<div class="col-lg-3 image" id="image4" data-img="assets/images/progressThree.svg">
Step 4
</div>
</div>
您可以将图像放在不同的 div 中,在启动时隐藏 div,当鼠标移到包含步骤的 div 上时显示 div。
<!DOCTYPE html>
<meta charset="utf-8"/>
<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
<script>
$(document).ready(function() {
$("#image1").mouseover(function() {
$("#img1").show();
$("#img2").hide();
$("#img3").hide();
$("#img4").hide();
});
$("#image2").mouseover(function() {
$("#img2").show();
$("#img1").hide();
$("#img3").hide();
$("#img4").hide();
});
$("#image3").mouseover(function() {
$("#img3").show();
$("#img2").hide();
$("#img1").hide();
$("#img4").hide();
});
$("#image4").mouseover(function() {
$("#img4").show();
$("#img1").hide();
$("#img3").hide();
$("#img2").hide();
});
});
</script>
<style type="text/css">
.images {
display: none;
}
#img1 {display: block}
</style>
</head>
<body>
<div class="row">
<div class="col-lg-3" id="image1">
Step 1
</div>
<div class="col-lg-3" id="image2">
Step 2
</div>
<div class="col-lg-3" id="image3">
Step 3
</div>
<div class="col-lg-3" id="image4">
Step 4
</div>
<div class="images" id = "img1">
<img src="https://via.placeholder.com/150">
</div>
<div class="images" id = "img2">
<img src="https://via.placeholder.com/200">
</div>
<div class="images" id = "img3">
<img src="https://via.placeholder.com/250">
</div>
<div class="images" id = "img4">
<img src="https://via.placeholder.com/300">
</div>
</div>
</body>
</html>