Как найти текущий элемент в mouseover с помощью jquery

Как я могу получить имя класса текущего элемента при наведении курсора мыши. Например enter image description here

когда мышь закончена от div до a, Я хочу получить имя класса элемента div.Как я могу получить его с помощью jquery?

9 ответов


Это моя версия:

function handler(ev) {
var target = $(ev.target);
var elId = target.attr('id');
if( target.is(".el") ) {
   alert('The mouse was over'+ elId );
}
}
$(".el").mouseleave(handler);

рабочая скрипка:http://jsfiddle.net/roXon/dJgf4/

function handler(ev) {
    var target = $(ev.target);
    var elId = target.attr('id');
    if( target.is(".el") ) {
       alert('The mouse was over'+ elId );
    }
}
$(".el").mouseleave(handler);
.el{
    width:200px;
    height:200px;
    margin:1px;
    position:relative;
    background:#ccc;   
    float:left;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<p>Hover an element and refresh the page, than move your mouse away.</p>
<div id="element1" class="el"></div>
<div id="element2" class="el"></div>
<div id="element3" class="el"></div>
<div id="element4" class="el"></div>
<div id="element5" class="el"></div>
<div id="element6" class="el"></div>
<div id="element7" class="el"></div>
<div id="element8" class="el"></div>
<div id="element9" class="el"></div>

вы можете попробовать это:

window.onmouseover=function(e) {
        console.log(e.target.className);
};

вы хотите имя класса div, на котором происходит событие mouseover? Если это так, то обратитесь,

HTML-код

<div class="a">aaaaaaaa</div>
<div class="b">bbbbbbbbb</div>

jQuery

$(document).on('mouseover', 'div', function(e) {
    console.log($(e.target).attr('class'));
});

jsFiddle

я использовал событие mouseover с target

e.target дает элемент, на котором происходит это событие

Если вы хотите получить имя класса div после выхода из него мыши тогда использовать "mouseleave" событие instaed "mouseover"


большинство людей пренебрегли этим запросом от OP:

When mouse over div from a

означает, что вам нужно знать, что вы зависли от определенного типа элемента,не только из любого элемента.

Я сделал глобальный var, изменив на true на mouseleave конкретных элементов, в вашем случае a элемент. Затем внутри функции наведения вам нужно проверить, что это правда.

здесь демо

Edit: обновлена демонстрация скрипки с краевыми случаями при зависании от a элемент не непосредственно на div.


получить положение элемента при наведении мыши, а затем получить имя класса

<div id="wrapper">
<a href="#" class="anchorClass">A</a><div class="divClass">DIV</div>
</div>

$('#wrapper').mouseover(function(e) {
    var x = e.clientX, y = e.clientY,
        elementOnMouseOver = document.elementFromPoint(x, y);
        elementClass=$(elementOnMouseOver).attr('class');
    alert(elementClass);
});

JSFiddle: http://jsfiddle.net/ankur1990/kUyE7/

Если вы не хотите применять это только на обертке div, но на всем окне / документе, то вы можете заменить обертку на window/document

 $(window).mouseover(function(e){});

это должно работать:

определить класс в таблице стилей:

.detectable-div{
    border: white solid 1px;
}

.detectable-div:hover{
    border: red solid 1px;
}

затем в вашем js:

$('div.detectable-div:hover').mouseover(function () {
    $(this) // this is your object
})

все зависит от того, как вы хотите его. Это также может быть вариант:

"Скрипка 1"

С более подробной информацией. Это будет отображаться как истина только после принятия прямого пути от a to div. (Крошечное белое пространство между a и div.) Как в:

  • a ->div TRUE
  • a ->div ->white space in between ->div FALSE

"Скрипка 2"

может подождать. Это также будет отображаться как true, если перейти к крошечному белому пространству между a и div, а затем вернуться к div. Как в:

  • a ->div ->white space in between ->div TRUE


var mode = 0;
$(window).on("mousemove", function(e) {
    if (e.target.className === "d1") {
        mode = 1;   
    } else {
        var cc = e.target.className;
        if (cc !== "d2" && mode) {
            var el = $(".d1"),
                d1 = {
                    x : el.offset().left,
                    y : el.offset().top,
                    w : el.width(),
                    h : el.height()
                },
                c = {
                    x  : e.pageX,
                    y  : e.pageY
                };
            if (c.x >= d1.x + d1.w && c.y >= d1.y && c.y <= d1.y + d1.h)
                mode = 2;
            else
                mode = 0;
        } else if (cc === "d2" && mode) {
            mode = 3;
        }
    }
    $("#status").html("Current: " + (mode == 3 ? "OVER" : "NOT OVER") + " from a" );
});

из jQuery API

 <div class="className">
      <span class="span">move your mouse</span>
    </div>



<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js"></script>
    <script type="text/javascript">
    $(".className").mouseover(function() {
        var n = $(this).attr("class");
        $(".span").html("");
        $(".span").html("The class :"+n);
      });
   </script>

jsfiddle

$(document).on('mouseover', 'div,a,span', function() {
    alert($(this).attr('class'));
});