2013-01-22 19 views
11

Buduję narzędzie do dzielenia wyników dla mojej witryny za pomocą javascript i jquery. Teraz chcę pokazać dla każdego elementu, który chcę podzielić małe hovermenu, gdy kursor przechodzi nad elementem w moim oknie podglądu. Czy jest jakaś możliwość zrobienia czegoś takiego? Naprawiłem coś takiego, ale tylko raz uruchamia się tylko jeden raz. Ponieważ nie chcę używać kliknięcia, ponieważ chcę również pokazać menu elementów zakotwiczających, jestem trochę zagubiony.jquery get element, w którym kursor jest

Odpowiedz

7

wierzę chcesz użyć zdarzenia mousemove tutaj zamiast razie hover.

$('body').mousemove(function(evt){ 
    console.log(evt.target); 
}); 

Pamiętaj tylko, aby używać mousemove z najwyższą ostrożnością.

See an example here.

7

Możesz użyć do tego celu document.elementFromPoint.

var element = document.elementFromPoint(x, y); 

Dla ex:

$('body').hover(function(event){ 
    var el = document.elementFromPoint(event.pageX, event.pageY); 
}); 

Docs: https://developer.mozilla.org/en-US/docs/DOM/document.elementFromPoint

+0

Pozwoli to zachować również wyzwalanie raz. I dlaczego ktoś chciałby użyć 'document.elementFromPoint', skoro można uzyskać ten element za darmo z' event'? – Alexander

+3

@Alexander - W tym konkretnym przypadku tak. Ale do oryginalnego pytania OP "jquery dostać element, gdzie kursor jest" - "document.elementFromPoint" jest drogą do zrobienia. – techfoobar

0

Spróbuj poniżej kodowanie to pomoże ...

<body onMouseMove="javaScript:mouseEventHandler(event);"> 

    <script> 
    function mouseEventHandler(mEvent) { 
// Internet Explorer 
       alert(mEvent.srcElement.nodeName); //Display Node Name 
       alert(mEvent.srcElement.id); //Display Element ID 
//FireFox 
       alert(mEvent.target.nodeName);//Display Node Name 
       alert(mEvent.target.id);//Display Element ID 
      } 
    </script> 
7

Jeśli używasz klawiatury, a nie myszy: Nie jQuery, po prostu JavaScript dla tych, którzy są zainteresowani :

getSelection().getRangeAt(0).commonAncestorContainer.parentNode 
-1

Istnieją 3 sposoby, aby to zrobić:

  1. Coś takiego:

    $('body').on('mousemove', function() { 
    console.log($(':hover').last().attr('name')); 
    }); 
    
  2. Do debugowania cel można jush typu w chromowaną konsolę $(':hover').last() niż najedź myszką gdzie chcesz i naciśnij Enter, aby uruchomić to polecenie konsoli.

  3. Jeśli chcesz go używać w całości, nie zalecamy używania zdarzenia mousemove. Użyj coś takiego

    $('.one_of_your_trigger_element').on('mouseenter', function() { 
    var hover_element = $(':hover').last(); 
    ... 
    }); 
    
Powiązane problemy