我试图创建一个动态的<ul>,以便当我将<li>(类的详细信息)悬停时,它会在其下动态创建另一个<li>(该类的作业)。我有这个工作。

但是,当我离开<li>时,我希望作业项列表消失。为此,我决定在离开<li>时删除作业的<li>。问题是,如果我从不将光标悬停在该作业列表上,而只是将鼠标悬停在班级项目详细信息之内或之外,它就不会消失。我是jQuery的新手,所以我可能缺少一些简单的东西。

悬停之前

javascript - 使用jQuery悬停动态显示&lt;li&gt;-LMLPHP

悬停在头等舱物品

javascript - 使用jQuery悬停动态显示&lt;li&gt;-LMLPHP

当我将鼠标移出该项目时,我希望这些项目消失

javascript - 使用jQuery悬停动态显示&lt;li&gt;-LMLPHP

但是我想保持以下功能:当我将鼠标悬停在作业列表上时,它不会消失:

javascript - 使用jQuery悬停动态显示&lt;li&gt;-LMLPHP

当我将鼠标悬停在作业列表之外时,它消失了(当前是这样做的)

这是我的代码:

jQuery.js

$(document).ready(function() {

    $(".item").hover(
        function(){
            $(this).find('.class-item').find('.top').css("background", "#D0D0D0");
            $(this).find('.class-item ').find('.bottom').css("background", "#B8B8B8");
            $(this).css("border-color", "white");

            $(this).css("margin-bottom", "0");

            $('#classes li:eq(' + $( "li" ).index(this) + ')').after('<li class="hw"><ul><li class="hw-item">Homework 1</li><li class="hw-item">Homework 2</li></ul></li>');

            var parent = $(this);

            $(".hw").hover(
                function(){
                },
                function(){
                    parent.css("margin-bottom", "2%");

                    $('#classes li:eq(' + ($( "li" ).index(parent) + 1) + ')').remove();
                }
            );

        },
        function(){

            $(this).find(' .class-item ').find(' .top ').css("background", "#B8B8B8");
            $(this).find(' .class-item ').find(' .bottom ').css("background", "#D0D0D0");
            $(this).css("border-color", "#888888");
        }
    );
});


style.css

* {
    margin: 0;
    padding: 0;
    box-sizing: border-box;
    font-family: "Courier New", monospace;
    font-size: 24px;
}

body {
}

#left {
    float: left;
    height: 100%;
    width: 60%;
    background: black;
}

#right {
    float: left;
    height: 100%;
    width: 40%;
    padding: 1%;
    background: black;
}

#classes {
    height: 100%;
    overflow-y: scroll
}

#classes::-webkit-scrollbar {
    display: none;
}

img {
    width: 100%;
    height: 100%;
    max-height: 100%;
    max-width: 100%;
}

.item {
    height: 150px;
    margin-bottom: 2%;
    border: 5px solid #888888;
}

.class-item {
    height: 100%;
    width: 100%;
    display: inline-block;
}

.top {
    width: 100%;
    height: 50%;
    text-align: center;
    background: #B8B8B8;
    overflow: hidden;
    white-space: nowrap;
    text-overflow: ellipsis;
}

.bottom {
    width: 100%;
    height: 50%;
    text-align: center;
    background: #D0D0D0;
    overflow: hidden;
    white-space: nowrap;
    text-overflow: ellipsis;
}

.hw {
    margin-bottom: 2%;
    padding: 1%;
    width: 100%;
    display: inline-block;
}

.hw-item{
    margin-bottom: 1%;
    padding: 0.25%;
    background: #D0D0D0;
    border: 3px solid white;
}

h3 {
    text-align: center;
}


index.html

<html>
    <head>
        <title>Homework</title>
        <link rel="stylesheet" href="style.css">
        <script src="http://code.jquery.com/jquery-2.1.4.min.js"></script>
        <script type="text/javascript" src="./jquery.js"></script>
    </head>

    <body>
        <div id="left">
            <img src="me.jpg"/>
        </div>

        <div id="right">
            <ul id="classes">
                <li class = "item">
                    <div class="class-item">
                        <div class="top">
                            <h3>Algorithm Analysis</h3>
                        </div>

                        <div class="bottom">
                            COMPSCI 704
                        </div>
                    </div>
                </li>

                <li class = "item">
                    <div class="class-item">
                        <div class="top">
                            <h3>Programming Language Concepts</h3>
                        </div>

                        <div class="bottom">
                            COMPSCI 431
                        </div>
                    </div>
                </li>
                <li class = "item">
                    <div class="class-item">
                        <div class="top">
                            <h3>Physics 1 with Calculus</h3>
                        </div>

                        <div class="bottom">
                            PHYSICS 209
                        </div>
                    </div>
                </li>
                <li class = "item">
                    <div class="class-item">
                        <div class="top">
                            <h3>Computer Ethics</h3>
                        </div>

                        <div class="bottom">
                            COMPSCI 395
                        </div>
                    </div>
                </li>
                <li class = "item">
                    <div class="class-item">
                        <div class="top">
                            <h3>Computer Architecture</h3>
                        </div>

                        <div class="bottom">
                            COMPSCI 458
                        </div>
                    </div>
                </li>
            </ul>
        </div>
    </body>
</html>

最佳答案

多亏了对我的帖子的评论,我才能够避免使用javascript,而仅通过CSS使用以下代码来做到这一点:

.class-item {
    height: 150px;
    width: 100%;
    display: inline-block;
    border: 5px solid #888888;
}

.homework {
    padding: 1%;
    display: none;
}

.class-item:hover + .homework {
    display: block;
}

.homework:hover {
    display: block;
}

关于javascript - 使用jQuery悬停动态显示<li>,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35121801/

10-12 00:11
查看更多