Я пытаюсь создать код, который, когда вы наведете диапазон в течение нескольких секунд, появится окно, и если вы держите мышь на коробке, он будет стоять на месте, не затухая снова. Пример кода это один:Почему второй раз, когда я наводил элемент, он исчезает?
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>I'm a pathetic programmer please don't flame me</title>
<script type="text/javascript" src="http://code.jquery.com/jquery-2.1.1.min.js"></script>
<script type="text/javascript">
$(function() {
var b = 1000;
var c = $('#box');
var d = function(a) {
if (a) {
c.fadeOut(500)
} else {
c.fadeIn(500)
}
};
$('span').mouseenter(function() {
e = setTimeout(function() {
d()
}, b);
$(this).mouseleave(function() {
typeof e != 'undefined' && clearTimeout(e);
f = setTimeout(function() {
d(1)
}, 300)
})
});
c.mouseenter(function() {
clearTimeout(f);
typeof g != 'undefined' && clearTimeout(g)
}).mouseleave(function() {
g = setTimeout(function() {
d(1)
}, 300)
})
});
</script>
<style type="text/css" media="screen">
#box {
display: none;
width: 100px;
height: 100px;
background-color: lightblue;
}
</style>
</head>
<body>
<span>HOVER ME</span>
<div id="box"></div>
</body>
</html>
Edit: JS скрипку для живого теста: http://jsfiddle.net/2ogcp9tm/
Проблема заключается в том, что код работает отлично в первый раз, когда я запустить его, но если я парить промежуток для второй раз, и я пытаюсь поместить мою мышь в синюю коробку, она все равно исчезает.
Почему это происходит?
Пожалуйста, не оставляйте уменьшенная с ode - использовать значащие имена переменных, а не a, b, c, ... – Barmar
@Barmar te original var были наихудшими, поэтому я сделал это, потому что это более понятно, чем использовать переменные, написанные на иностранном языке. – Flerex
Хорошая точка, это тоже очень раздражает. :) Но иногда мы можем понять их, в то время как a, b, c, совершенно сбивает с толку. – Barmar