Как я могу найти текущий элемент при наведении курсора с помощью jQuery?

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

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


person midstack    schedule 20.02.2014    source источник
comment
Можете ли вы создать скрипку, чтобы уточнить вашу проблему?   -  person V31    schedule 20.02.2014
comment
Опубликуйте свой html и то, что у вас есть до сих пор   -  person Huangism    schedule 20.02.2014
comment
один из способов, возможно, не лучший, - создать стиль, который назначается при наведении, а затем найти элемент, который имеет этот стиль   -  person bto.rdz    schedule 20.02.2014
comment
jsfiddle.net/roXon/dJgf4   -  person Hackerman    schedule 20.02.2014
comment
@ Роберт Розас, спасибо   -  person midstack    schedule 08.05.2015
comment
@midstack рад помочь :)   -  person Hackerman    schedule 08.05.2015
comment
@RobertRozas Можете ли вы написать это как ответ, пожалуйста?   -  person midstack    schedule 09.05.2015


Ответы (8)


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

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>

person Hackerman    schedule 10.05.2015

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

window.onmouseover=function(e) {
        console.log(e.target.className);
};
person Adesh Pandey    schedule 20.02.2014

Вам нужно имя класса 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

Я использовал событие наведения мыши с целью

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

Если вы хотите получить имя класса div после того, как отпустите от него мышь, используйте событие «mouseleave» вместо «mouseover».

person Snehal S    schedule 20.02.2014

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

When mouse over div from a

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

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

Вот демонстрация

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

person Omri Aharon    schedule 20.02.2014

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

<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).mouseover(function(e){});
person Ankur Aggarwal    schedule 20.02.2014
comment
Это даст вам любой элемент внутри wrapper, а не только рассматриваемые div. - person silencedmessage; 22.08.2014

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

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

.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
})
person bto.rdz    schedule 20.02.2014

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

»Скрипка 1«

С некоторыми подробностями. Это будет отображаться как истина только после перехода по прямому пути от a к div. (Крошечный пробел между a и div.) Например:

  • a -> div ИСТИНА
  • a -> div -> white space in between -> div ЛОЖЬ

»Скрипка 2«

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

  • a -> div -> white space in between -> div ИСТИНА

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" );
});
person user13500    schedule 20.02.2014

Из 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>
person Netzach    schedule 20.02.2014