由于各种原因,我不能在这部分项目中使用 jQuery。所以我需要在 vanilla js 中检测到这一点。我试过这个但它不起作用:
var myDiv = document.getElementById('foo');
myDiv.onmouseenter = function() {
alert('entered');
}
myDiv.onmouseleave = function() {
alert('left');
}
由于各种原因,我不能在这部分项目中使用 jQuery。所以我需要在 vanilla js 中检测到这一点。我试过这个但它不起作用:
var myDiv = document.getElementById('foo');
myDiv.onmouseenter = function() {
alert('entered');
}
myDiv.onmouseleave = function() {
alert('left');
}
myDiv.onmouseover = function(event) {
if (this != event.currentTarget) { return false; }
// mouse enter ...
}
myDiv.onmouseout = function(event) {
if (this != event.currentTarget) { return false; }
// mouse leave ...
}
mouseenter
和事件是 Internet Explorer 专有的mouseleave
,因此如果您不使用 IE,它们将无法工作。使用mouseover
andmouseout
代替。
顺便说一句,您可以使用jQuery mouseenter
,mouseleave
因为 jQuery 会在非 IE 浏览器上为您模拟这些事件。有关如何模拟和自己的提示,请参阅本文。mouseenter
mouseleave
mouseenter
并且mouseleave
是专有的 MS 事件(实际上非常好)。如果myDiv
没有孩子,使用mouseover
/mouseout
将具有完全相同的效果。
注意:这个原始问题和答案非常古老,并且mouseenter
在mouseleave
IE 之外没有得到很好的支持。很长一段时间以来,所有现代浏览器都支持元素上的这些事件。它们通常比mouseover
/更受欢迎,mouseout
因为除了元素本身之外,后者还将触发具有事件侦听器的元素的每个子元素。
你很亲密。函数名是onmouseover和onmouseout
var myDiv = document.getElementById('foo');
myDiv.onmouseover = function() {
alert('entered');
}
myDiv.onmouseout = function() {
alert('left');
}
试试: var myDiv = document.getElementById('foo');
myDiv.onmouseover = function() {
alert('entered');
}
myDiv.onmouseout = function() {
alert('left');
}
onmouseenter 和 onmouseleave 是 IE 独有的功能。