使用 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()
})