2015-01-20 2 views
0

Я пытаюсь получить предупреждение, чтобы работать, когда div зависает.предотвращает зависание от запуска события дважды

http://jsfiddle.net/4RgTS/248/

Мой текущий код (для DIV с именем «testdiv»)

$(document).ready(function() { 
    $("#testdiv").hover(function() { 
     alert('1'); 
    }); 
}); 

Это работает и показывает предупреждение, но на следующем движении мыши предупреждение показывается снова, хотя я я не вишу над div?

Спасибо, как всегда,

ответ

2

Это происходит потому, что если только одна функция-обработчик передается hover() используется для обоих mouseenter и mouseleave событий. Чтобы получить поведение, которое вы хотите, изменить использовать mouseenter только:

$("#testdiv").mouseenter(function() { 
    alert('1'); 
}); 

Updated fiddle

+0

Когда я снова парить на него, он делает то же самое. –

+1

Это правильно. Если вы только хотите, чтобы он срабатывал один раз, используйте '.one ('mouseover', function() {...' –

+0

Да, ладно, у меня вопрос неправильный. Обновлен мой ответ тоже! ':)' –

1

Я считаю, что вы хотите только .mouseenter() событие здесь:

$("#testdiv").mouseenter(function() { 
     alert('1'); 
}); 

Working Demo

3

Вы можете используйте $.one событие для обработки:

$(document).ready(function() { 
 
    $("#testdiv").one("mouseenter", 
 
    function() { 
 
     alert('1'); 
 
    }); 
 
});
#testdiv {background: #ccf;}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js"></script> 
 
<div id="testdiv">Hover Me!!!</div>


Или, если я не получил свой вопрос прямо, вам просто нужно использовать mouseenter событие.

$(document).ready(function() { 
 
    $("#testdiv").on("mouseenter", 
 
    function() { 
 
     alert('1'); 
 
    }); 
 
});
#testdiv {background: #ccf;}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js"></script> 
 
<div id="testdiv">Hover Me!!!</div>

Смежные вопросы