Проверка состояния Jquery (': hover') не работает - PullRequest
10 голосов
/ 04 ноября 2011
$('.xx').mouseenter(function(){
  if($(this).is(':hover'))
    alert('d');
  else
     alert('f');
});

Вот мой код, он должен предупреждать 'd', но каждый раз, когда он предупреждает 'f' В чем здесь ошибка

Ответы [ 8 ]

31 голосов
/ 11 мая 2013
function idIsHovered(id){
    return $("#" + id + ":hover").length > 0;
}

http://jsfiddle.net/mathheadinclouds/V342R/

14 голосов
/ 04 ноября 2011

: hover - это псевдокласс CSS , а не селектор jQuery. Его нельзя надежно использовать с is () во всех браузерах.

6 голосов
/ 04 ноября 2011

Как сказал Фредерик, : hover является частью CSS и не является селектором в jQuery.

Для альтернативного решения прочитайте Как проверить, работает ли мышьнад элементом в jQuery?

Установить тайм-аут при наведении мыши на затухание и сохранить возвращаемое значение для данных в объекте.Затем onmouseover, отмените тайм-аут, если в данных есть значение.

Удалите данные по обратному вызову затухания.

1 голос
/ 04 ноября 2011

Попробуйте что-то вроде этого -

$('.xx').hover(function(){        
        alert('d');
    }, function() {
       alert('f);
    });
1 голос
/ 04 ноября 2011

почему бы вам просто не использовать .hover?

$(".xx").hover(function(){
    alert("d");
});
0 голосов
/ 01 марта 2017

Вот небольшой jQuery плагин , который проверяет, находится ли мышь над элементом.

Использование:

$("#YourElement").isMouseOverMe();

Пример:

(function($) {

  var mx = 0;
  var my = 0;

  $(document).mousemove(function(e) { // no expensive logic here
    mx = e.clientX; 
    my = e.clientY;
  })

  $.fn.isMouseOverMe = function() {

    var $el = $(this);
    var el_xmin = $el.offset().left;
    var el_ymin = $el.offset().top;
    var el_xmax = el_xmin + $el.width();
    var el_ymax = el_ymin + $el.height();
    return mx >= el_xmin && mx <= el_xmax && my >= el_ymin && my <= el_ymax;
  };

}(jQuery));

$(document).mouseup(function(e) {
  console.log($("#div").isMouseOverMe())
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<h2>Click inside or outside of the yellow box</h2>
<div id="div" style="width:200px;height:200px;background-color:yellow;margin-top:50px"></div>
0 голосов
/ 30 мая 2016
x.filter(':hover').length

Это может также использоваться, когда вы уже запросили некоторые объекты / или внутри функции обратного вызова.

0 голосов
/ 20 января 2014

Попробуйте что-то вроде этого

flag = ($('.xx:hover').length>0);

Таким образом, вы можете узнать, является ли мышь объектом

...