2013-07-03 2 views
0

Я обнаружил, что всем другим людям, которые просили об этом в прошлом, было сказано использовать :hover, но этого больше не существует. Есть ли способ получить boolean из .hover()?Проверка, что мышь что-то в jQuery?

настоящее время я использую .hover() для того, чтобы сделать div появляются, когда я mouseover кнопку, а затем она исчезает, когда я mouseout. Тем не менее, я хотел бы добавить чек, так что div не исчезнет, ​​если мышь не находится над кнопкой И мышь находится вне div.

+0

': hover' существует, в CSS, где вы можете сделать это без какого-либо javascript, если вы правильно структурируете свою разметку. – adeneo

+0

Подождите, что? Когда '' hover' ушел ...? –

+0

моя ошибка - видимо, этого не произошло. я имел в виду редактирование ответа на этот вопрос: «Этот переключатель:: hover был удален с помощью метода .hover() в jQuery 1.9.x." http://stackoverflow.com/questions/8981463/detect-if-hovering-over-element-with-jquery – user2223066

ответ

3

Что-то, как это должно работать ...

var $in_div = 0; 

$("div").mouseenter(function(){ 
    $in_div = 1; 
}).mouseleave(function(){ 
    $in_div = 0; 
}); 

$("button").mouseenter(function(){ 
    $("div").show(); 
}).mouseleave(function(){ 
    if ($in_div == 1) { $("div").hide() } 
}); 

Это еще один метод, который я обычно использую, задерживая скрыть от 500мс, мы можем прервать его, если мы хотим (в этом случае, если пользователь оставляет кнопку, но входит в div).

var $delay = 0; 
$("button").mouseenter(function(){ 
    clearTimeout($delay); // don't hide 
    $("div").show(); 
}).mouseleave(function(){ 
    $delay = setTimeout(function(){ $("div").hide() }, 500); 
}); 
$("div").mouseenter(function(){ 
    clearTimeout($delay); // don't hide 
}); 
Смежные вопросы