首页 > 解决方案 > 使用 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>
强文本

标签: javascripthtmljqueryimageshow

解决方案


问题是你绑定了两个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>


推荐阅读