Как я могу получить имя класса текущего элемента, который находится при наведении курсора мыши? Например,
Когда мышь переходит от div к a, я хочу получить имя класса элемента div. Как я могу получить это с помощью jQuery?
Как я могу получить имя класса текущего элемента, который находится при наведении курсора мыши? Например,
Когда мышь переходит от div к a, я хочу получить имя класса элемента div. Как я могу получить это с помощью jQuery?
Это моя версия:
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);
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'));
});
Я использовал событие наведения мыши с целью
e.target дает элемент, на котором происходит это событие
Если вы хотите получить имя класса div после того, как отпустите от него мышь, используйте событие «mouseleave» вместо «mouseover».
Большинство людей пренебрегли этим запросом от ОП:
When mouse over div from a
Это означает, что вам нужно знать, что вы навели курсор мыши на элемент определенного типа, а не просто на любой элемент.
Я сделал глобальную переменную, изменив значение true на mouseleave
определенных элементов, в вашем случае на элемент a
. Затем внутри функции наведения вам нужно проверить, что это правда.
Вот демонстрация
Изменить: обновлена демонстрация скрипки с пограничными случаями при наведении курсора на элемент 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).mouseover(function(e){});
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
})
Все зависит от того, как вы этого хотите. Это тоже может быть вариант:
С некоторыми подробностями. Это будет отображаться как истина только после перехода по прямому пути от a
к div
. (Крошечный пробел между a
и div
.) Например:
a
-> div
ИСТИНАa
-> div
-> white space in between
-> div
ЛОЖЬМожет задержаться. Это также будет отображаться как верное, если перейти к крошечному пробелу между 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" );
});
Из 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>