Вход

Просмотр полной версии : При повторном наведении блок мигает (как исправить), jquery


Manzroid
17.04.2015, 10:08
Здравствуйте!

Есть функция которая при наведении на блок вставляет в него другой блок, который затем исчезает через 1200 милисекунд. Однако если в это время повторно навести, появляется дубль блока. Я пытался поиграться с методом .stop (), ничего не дало. Какие будут предложения? (замечу, что нужен именно такой вариант кода как ниже, т.е. я имею ввиду без скрытого див блока, т.к. именно в таком варианте я справился с глюком когда при наведении у всех других див с таким же классом, появляется блок). Вот код:

$(document).ready(function(){
$("span.price").hover(function(){

$(this).append($('<a href="http://www.****.ru/skidki.html" target="_blank"><div class="priceout">БЛА БЛА БЛА</div></a>').fadeIn(1200));
}, function() {

$(this).find("div:last").fadeOut(200);

});
});

рони
17.04.2015, 10:17
Manzroid,
если блок вставлен уже зачем его добавлять ещё сотни раз?

рони
17.04.2015, 10:58
Manzroid,
<!DOCTYPE HTML>

<html>

<head>
<title>Untitled</title>
<meta charset="utf-8">
<style type="text/css">
</style>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
<script>
$(function() {
$("span.price").mouseenter(function() {
var a = $(this).find($(".priceout").parent());
a = a.length ? a : $('<a href="http://www.****.ru/skidki.html" target="_blank"><div class="priceout">БЛА БЛА БЛА</div></a>').css({
"display": "none"
}).appendTo(this);
a.stop(true, true).fadeIn(1200)
}).mouseleave(function() {
$(this).find($(".priceout").parent()).stop(true, true).fadeOut(200)
})
});
</script>
</head>

<body>
<div class='main'>
<span class='price'>текст1</span>
</div>
<div class='main'>
<span class='price'>текст2</span>
</div>

</body>

</html>