在下一页上,将鼠标悬停在文本上会附加一个带有幻灯片效果的文本的div。问题是,当它向上滑动以删除div时,再次在文本上输入鼠标会停止滑动并且div仍然没有文本。进入和离开快速附加div。在这种情况下如何恢复滑落?
的index.html
<!DOCTYPE html>
<html>
<head>
<script src = "http://code.jquery.com/jquery-1.10.1.min.js" type = "text/javascript"></script>
<script src = "script.js" type = "text/javascript"></script>
</head>
<body>
<div id = "main_div" style = "width: 33%">
<div id = "hover_div">
<h1 style = "width: 300px; background-color: blue; margin: 0; border: 1px solid #DDDDDD" id = "text1">Hover to see the truth</h1>
</div>
</div>
</body>
</html>
的script.js
$(document).ready (function() {
$(document).on ("mouseenter", "#text1", function() {
$("#main_div").append ("<div style = 'background-color: red; width: 300px; height: 200px; margin: 0; border: 1px solid #DDDDDD' id = 'descr'></div>");
$("#descr")
.hide()
.append ("<h3 id = 'truth' style = 'float: left; height: 100px'>You're an idiot</h3>")
.slideDown ("slow");
});
$(document).on ("mouseleave", "#text1", function() {
$("#descr").slideUp ("slow", function() {
$(this).remove();
});
});
$(document).on ("mouseenter", "#descr", function() {
$("#descr").slideUp ("slow", function() {
$(this).remove();
});
});
});
演示:Fiddle
答案 0 :(得分:1)
只需添加
$("#descr").remove();
之后
$(document).on ("mouseenter", "#text1", function() {
演示 - http://jsbin.com/efoqux/1/edit或http://jsfiddle.net/atif089/prS8R/6/
答案 1 :(得分:0)
在$(document).on ("mouseenter", "#text1", ..
函数
$("#main_div").children(":not('#hover_div')").remove().end()
答案 2 :(得分:0)
在执行任何其他动画之前检查元素是否已设置动画。
$(document).on ("mouseenter", "#text1", function() {
//Do not append div multiple times
if($("#descr").length ==0){
$("#main_div").append ("<div style = 'background-color: red; width: 300px; height: 200px; margin: 0; border: 1px solid #DDDDDD' id = 'descr'></div>");
}
//Guard against animation
if($("#descr").is(":animated")){
return false;
}
$("#descr")
.hide()
.append ("<h3 id = 'truth' style = 'float: left; height: 100px'>You're an idiot</h3>")
.slideDown ("slow");
});
$(document).on ("mouseleave", "#text1", function() {
//Guard against animation
if($("#descr").is(":animated")){
return false;
}
$("#descr").slideUp ("slow", function() {
$(this).remove();
});
});
$(document).on ("mouseenter", "#descr", function() {
if($("#descr").is(":animated")){
return false;
}
$("#descr").slideUp ("slow", function() {
$(this).remove();
});
});