由于各种原因,我无法在项目的这一部分使用jQuery.所以我需要在vanilla js中检测到这一点.我试过这个,但它不起作用:
var myDiv = document.getElementById('foo');
myDiv.onmouseenter = function() {
alert('entered');
}
myDiv.onmouseleave = function() {
alert('left');
}
Run Code Online (Sandbox Code Playgroud)
myDiv.onmouseover = function(event) {
if (this != event.currentTarget) { return false; }
// mouse enter ...
}
myDiv.onmouseout = function(event) {
if (this != event.currentTarget) { return false; }
// mouse leave ...
}
Run Code Online (Sandbox Code Playgroud)
mouseenter并且mouseleave是专有的 MS 事件(实际上非常好)。如果myDiv没有孩子,使用mouseover/mouseout将具有完全相同的效果。
注意:这个原始问题和答案非常古老,并且mouseenter在mouseleaveIE 之外没有得到很好的支持。所有现代浏览器在相当长的一段时间内都支持元素上的这些事件。它们通常优于mouseover/ mouseout,因为除了元素本身之外,后者还将通过事件侦听器触发元素的每个子元素。