Javascript 显示<;李>;动态使用jqueryhover
我试图创建一个动态的Javascript 显示<;李>;动态使用jqueryhover,javascript,jquery,html,css,user-interface,Javascript,Jquery,Html,Css,User Interface,我试图创建一个动态的,这样当我将鼠标悬停在(类详细信息)上时,它会在其下方动态创建另一个(该类的作业)。我有这个工作 但是,当我离开时,我希望作业项目列表消失。为了完成这一点,我决定在离开时删除作业项的。问题是,如果我从不停留在作业列表中,而只是停留在类项目细节中,它就不会消失。我是jQuery新手,因此可能缺少一些简单的东西 悬停前 悬停在第一类项目中 当我将鼠标移出项目时,我希望项目消失 但我想保持这样的功能,当我悬停在作业列表中时,它不会消失: 当我将鼠标悬停在作业列表外时,它消失
,这样当我将鼠标悬停在(类详细信息)上时,它会在其下方动态创建另一个(该类的作业)。我有这个工作
但是,当我离开
时,我希望作业项目列表消失。为了完成这一点,我决定在离开时删除作业项的。问题是,如果我从不停留在作业列表中,而只是停留在类项目细节中,它就不会消失。我是jQuery新手,因此可能缺少一些简单的东西
悬停前
悬停在第一类项目中
当我将鼠标移出项目时,我希望项目消失
但我想保持这样的功能,当我悬停在作业列表中时,它不会消失:
当我将鼠标悬停在作业列表外时,它消失了(目前正在这样做)
这是我的密码:
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");
}
);
});
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>
作业
-
算法分析
COMPSCI 704
-
程序设计语言概念
COMPSCI 431
-
物理1与微积分
物理学209
-
计算机伦理
COMPSCI 395
-
计算机体系结构
COMPSCI 458
多亏了我帖子上的评论,我得以避免使用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;这可以通过CSS来完成。关于这一点,有很多例子/教程。我认为这不是正确的方法,你不应该在悬停时创建li
。这些项目应该已经存在于隐藏的子项ul
中,当鼠标悬停时,当ul
失去焦点或父项li
失去焦点时,这些项目就会消失。我会这样做的
.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;
}