使用 jQuery 在鼠标悬停时显示图像
Show image on mouseover with jQuery
我正在使用 JQuery 并且我想在文本 mouseover/hover 时显示图像。我想这样做而不必将图片添加到我的 HTML 文件中。我不希望图片显示在我的 html 页面上。
我尝试了 span 但这将它添加到页面中。我不希望它显示在页面的任何位置,除非文本悬停在上面。
到目前为止,这是我的代码
$(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
事件添加了两个侦听器,所以发生的情况是第一个显示弹出窗口,第二个立即隐藏它。
我认为您需要将隐藏功能绑定到 mouseout
事件
$('#wand').on('mouseout', function() {
$('#popup').hide()
})
我正在使用 JQuery 并且我想在文本 mouseover/hover 时显示图像。我想这样做而不必将图片添加到我的 HTML 文件中。我不希望图片显示在我的 html 页面上。 我尝试了 span 但这将它添加到页面中。我不希望它显示在页面的任何位置,除非文本悬停在上面。
到目前为止,这是我的代码
$(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
事件添加了两个侦听器,所以发生的情况是第一个显示弹出窗口,第二个立即隐藏它。
我认为您需要将隐藏功能绑定到 mouseout
事件
$('#wand').on('mouseout', function() {
$('#popup').hide()
})