как узнать, находится ли указатель мыши на элементе HTML? - PullRequest
2 голосов
/ 03 августа 2010

У меня есть временное событие, и я хочу вести себя иначе, в зависимости от того, на каком HTML-элементе находится указатель мыши.
Есть ли способ, предполагая, что у меня есть элемент HTML, чтобы узнать, находится ли указатель мыши поверх него.
Я хорошо знаю о событиях onmouseover / onmouseout и о том, как их использовать.
Я использую JQuery.
Я явно ищу какой-то флаг, так как мне нужно проверить состояние, а не обрабатывать событие.
Опять же, я знаю, как реализовать это с событиями.

Ответы [ 4 ]

3 голосов
/ 04 августа 2010

Мне неизвестен какой-либо встроенный способ проверки связи элемента со статусом зависания мыши.

Однако вы можете создать его, обновив флаг в mouseenter и mouseleave - вот где предложение Брайана Дрисколла о .hover входит в:

jQuery.fn.tracking = function () {
  this.data('hovering', false);

  this.hover(function () {
    $(this).data('hovering', true);
  }, function () {
    $(this).data('hovering', false);
  });

  return this;
};

jQuery.fn.hovering = function () {
  return this.data('hovering');
}

Вам нужно будет инициализировать отслеживание для каждого интересующего вас элемента:

$('#elem1,#elem2').tracking();

Но тогда вы можете получить статус любого из них:

if ($('#elem1').hovering()) {
    // ...
} else if ($('#elem2').hovering()) {
    // ...
}

Демо: http://jsbin.com/amaxu3/edit

3 голосов
/ 03 августа 2010

Вы смотрели в jQuery.hover ()?http://api.jquery.com/hover/

0 голосов
/ 04 августа 2010

Вам нужно дать имя html andme, а при наведении курсора мыши вы должны проверить document.getelementsbyName. Затем проверьте, что вы получаете в качестве вывода. Теперь вы можете принять решение, это HTML-контроль или asp.net.

Когда вы используете collObjects = object.getElementsByName ("htmlcontrol"), тогда сравните id обоих.

Еще 1, почему вам нужно было проверить это в JavaScript. может быть какое-то другое решение для этого. Просто поделитесь с нами.

0 голосов
/ 03 августа 2010

Возможно, вам повезет с document.elementFromPoint, хотя я считаю, что в старых реализациях браузеров есть некоторые несоответствия (http://www.quirksmode.org/dom/w3c_cssom.html#documentview).

$('#elem').mousemove(function(e){
    if (this == document.elementFromPoint(e.clientX, e.clientY)) {
        // Do stuff
    }
});

Или вне обработчика

if ($('#elem').get(0) == document.elementFromPoint(x, y)) {
    // Do stuff
}

Кроме этого, единственная другая опция, которая приходит на ум, - это использование обработчиков событий для отслеживания того, над каким элементом находится мышь.

...