如何解决使用jQuery在鼠标悬停时显示图像
我正在使用JQuery,并且想在鼠标悬停在文本上时显示图像。我想这样做而不必将图片添加到我的HTML文件中。我不希望图片显示在我的html页面上。 我尝试了跨度,但这将其添加到页面中。除非将文字悬停在上面,否则我不希望它显示在页面的任何地方。
到目前为止,这是我的代码
$(document).ready(() => {
const $container = $('<div id="container">')
$('body').append($container)
const $h1 = $('<h1>').text('Hogwarts Magic School')
$container.append($h1)
var $h4Wand = $('<h4 id="wand">').text('Unicorn Wand')
$($container).append($h4Wand)
$('#wand').on('mouseover',function() {
$('#popup').show()
})
$('#wand').on('mouseover',function() {
$('#popup').hide()
})
});
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<title>Hogwarts</title>
<meta name="description" content="">
<meta name="viewport" content="width=device-width,initial-scale=1">
<link rel="stylesheet" href="main.css">
<script
src="https://code.jquery.com/jquery-3.2.0.min.js"
integrity="sha256-JAW99MJVpJBGcbzEuXk4Az05s/XyDdBomFqNlM3ic+I="
crossorigin="anonymous"></script>
</head>
<body>
<h5>spring 2020</h5>
<span id="popup"><img src="wand.jpg"/></span>
<script type="text/javascript" src="app.js"></script>
</body>
</html>
解决方法
问题是您绑定了两个mouseover
事件,为了达到目标,当您要隐藏图像时,需要使用mouseout
代替
$(document).ready(() => {
const $container = $('<div id="container">')
$('body').append($container)
const $h1 = $('<h1>').text('Hogwarts Magic School')
$container.append($h1)
var $h4Wand = $('<h4 id="wand">').text('Unicorn Wand')
$($container).append($h4Wand);
$('#popup').hide();
$('#wand').on('mouseover',function() {
$('#popup').show();
})
$('#wand').on('mouseout',function() {
$('#popup').hide();
})
});
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<title>Hogwarts</title>
<meta name="description" content="">
<meta name="viewport" content="width=device-width,initial-scale=1">
<link rel="stylesheet" href="main.css">
<script
src="https://code.jquery.com/jquery-3.2.0.min.js"
integrity="sha256-JAW99MJVpJBGcbzEuXk4Az05s/XyDdBomFqNlM3ic+I="
crossorigin="anonymous"></script>
</head>
<body>
<h5>spring 2020</h5>
<span id="popup"><img src="https://s1.ax1x.com/2020/10/04/08bjVU.png"/></span>
<script type="text/javascript" src="app.js"></script>
</body>
</html>
另一种选择是使用变量来确定是隐藏还是显示图像,我认为这种方法比上一个更有效
var count = 0;
$(document).ready(() => {
const $container = $('<div id="container">')
$('body').append($container)
const $h1 = $('<h1>').text('Hogwarts Magic School')
$container.append($h1)
var $h4Wand = $('<h4 id="wand">').text('Unicorn Wand')
$($container).append($h4Wand);
$('#popup').hide();
$('#wand').on('mouseover',function() {
if(count%2==0){
$('#popup').show();
}else{
$('#popup').hide();
}
count++;
})
});
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<title>Hogwarts</title>
<meta name="description" content="">
<meta name="viewport" content="width=device-width,initial-scale=1">
<link rel="stylesheet" href="main.css">
<script
src="https://code.jquery.com/jquery-3.2.0.min.js"
integrity="sha256-JAW99MJVpJBGcbzEuXk4Az05s/XyDdBomFqNlM3ic+I="
crossorigin="anonymous"></script>
</head>
<body>
<h5>spring 2020</h5>
<span id="popup"><img src="https://s1.ax1x.com/2020/10/04/08bjVU.png"/></span>
<script type="text/javascript" src="app.js"></script>
</body>
</html>
,
好的,因此,首先需要在首次加载页面时隐藏弹出窗口的跨度。
您可以在HTML中执行此操作:
<span id="popup" style="display:none;"><img src="wand.jpg"/></span>
或在您的CSS中:
#popup {display: none;}
然后,您需要查看事件侦听器。当前,您已经为mouseover
事件添加了两个侦听器,因此发生的是第一个侦听器显示了弹出窗口,而第二个侦听器立即将其隐藏。
我认为您需要将hide函数绑定到mouseout
事件
$('#wand').on('mouseout',function() {
$('#popup').hide()
})
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。