jQuery: событие, похожее на «наведение мыши»

0

Мне нужно событие, которое вызывает каждый раз, когда я перемещаю мышь над некоторым элементом HTML. Но мне нужно, чтобы он срабатывал все время, когда я двигаюсь, а не только когда я ввожу какой-то элемент (например, событие mouseover, mouseenter или hover).

Я видел, как многие люди пытались сделать просто противоположную функциональность несколько лет назад (элемент mouseover стрелял все время, когда я парил над некоторым div), но каждый раз, когда я тестировал это событие, он срабатывал только тогда, когда я входил в какой-то div. Мне нужно, чтобы он срабатывал каждый раз, когда я двигаю мышью, и я над наблюдаемым элементом, поэтому я могу определить относительное положение мыши к этому элементу.

Есть ли какое-то событие, которого я упускаю, или есть какое-то решение, как отслеживать положение мыши в каком-то элементе, основанном только на зависании (не нажимайте, dbclick,..)?

  • 4
    mousemove ??? Кстати, вы всегда должны проверить DOC: api.jquery.com/category/events/mouse-events
  • 0
    Да это оно. Боже мой, извините, я не сработал сам, я пробовал буквально каждое событие, но это и так оно и заканчивается. Большое спасибо, мне сейчас очень стыдно
Показать ещё 1 комментарий
Теги:

3 ответа

2
Лучший ответ

Добавьте событие mouseover, затем привяжите к mousemove. Я сделал вам небольшой пример, чтобы увидеть координаты, пока вы двигаетесь над div.

$("#mydiv").bind('mousemove', function(event) 
{ 
    var offsetleft = this.offsetLeft;
    var offsettop = this.offsetTop;
    var coordX = event.pageX - offsetleft;
    var coordY = event.pageY - offsettop;
    $("#coords").html("X: " + coordX + " Y: " + coordY);                                 
});

http://jsfiddle.net/dVqwH/2/

  • 0
    Очень красиво и полезно, спасибо!
  • 0
    Спасибо также, я только что обновил его, чтобы дать вам координаты указателя мыши внутри div, а не всей страницы.
1

Попробуйте использовать mousemove: http://api.jquery.com/mousemove/

$( "#target" ).mousemove(function( event ) {
  var msg = "Handler for .mousemove() called at ";
  msg += event.pageX + ", " + event.pageY;
  $( "#log" ).append( "<div>" + msg + "</div>" );
});
1

вы можете привязываться к событию jQuery mousemove

$( "html" ).mousemove(function( event ) {
  ...
});

jsFiddle demo

В примерах я привязываюсь ко всему документу, но вы можете легко привязать элемент интереса с помощью селекторов jquery

  • 1
    За исключением того, что вы привязываете его к своему HTML-элементу, а не к body .
  • 0
    @ Марс, верно! обновлено: D

Ещё вопросы

Сообщество Overcoder
Наверх
Меню