13 Stimmen

Jquery Bedingungsprüfung is(':hover') funktioniert nicht

$('.xx').mouseenter(function(){
  if($(this).is(':hover'))
    alert('d');
  else
     alert('f');
});

Hier ist mein Code, er sollte 'd' melden, aber jedes Mal meldet er 'f' Was ist hier der Fehler?

1voto

Evan Punkte 5857

Warum verwenden Sie nicht einfach .hover?

$(".xx").hover(function(){
    alert("d");
});

0voto

FRAGnat Punkte 53

Versuchen Sie etwas wie dies

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

So können Sie herausfinden, ob die Maus, das Objekt

0voto

Legends Punkte 18859

Hier ist eine kleine jQuery-Plugin die prüft, ob sich die Maus über einem Element befindet.

Verwendung:

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

Ejemplo:

(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>

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X