mouseleave
event is fired at an
元素
when the cursor of a pointing device (usually a mouse) is moved out of it.
| 冒泡 | No |
|---|---|
| 可取消 | No |
| 接口 |
MouseEvent
|
| 事件处理程序特性 |
onmouseleave
|
mouseleave
and
mouseout
are similar but differ in that
mouseleave
does not bubble and
mouseout
does. This means that
mouseleave
is fired when the pointer has exited the element
and
all of its descendants, whereas
mouseout
is fired when the pointer leaves the element
or
leaves one of the element's descendants (even if the pointer is still within the element).
One
mouseleave
event is sent to each element of the hierarchy when leaving them. Here four events are sent to the four elements of the hierarchy when the pointer moves from the text to an area outside of the most outer div represented here.
One single
mouseout
event is sent to the deepest element of the DOM tree, then it bubbles up the hierarchy until it is canceled by a handler or reaches the root.
mouseout
documentation has an example illustrating the difference between
mouseout
and
mouseleave
.
The following trivial example uses the
mouseenter
event to change the border on the
<div>
when the mouse enters the space alloted to it. It then adds an item to the list with the number of the
mouseenter
or
mouseleave
事件。
<div id='mouseTarget'> <ul id="unorderedList"> <li>No events yet!</li> </ul> </div>
Styling the
<div>
to make it more visible.
#mouseTarget {
box-sizing: border-box;
width:15rem;
border:1px solid #333;
}
var enterEventCount = 0;
var leaveEventCount = 0;
const mouseTarget = document.getElementById('mouseTarget');
const unorderedList = document.getElementById('unorderedList');
mouseTarget.addEventListener('mouseenter', e => {
mouseTarget.style.border = '5px dotted orange';
enterEventCount++;
addListItem('This is mouseenter event ' + enterEventCount + '.');
});
mouseTarget.addEventListener('mouseleave', e => {
mouseTarget.style.border = '1px solid #333';
leaveEventCount++;
addListItem('This is mouseleave event ' + leaveEventCount + '.');
});
function addListItem(text) {
// Create a new text node using the supplied text
var newTextNode = document.createTextNode(text);
// Create a new li element
var newListItem = document.createElement("li");
// Add the text node to the li element
newListItem.appendChild(newTextNode);
// Add the newly created list item to list
unorderedList.appendChild(newListItem);
}
| 规范 | 状态 |
|---|---|
|
UI Events
The definition of 'mouseleave' in that specification. |
工作草案 |
|
DOM (文档对象模型) 3 级事件规范
The definition of 'mouseleave' in that specification. |
过时 |
| 桌面 | 移动 | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
mouseleave
event
|
Chrome 30 | Edge 12 | Firefox 10 | IE 5.5 | Opera 17 | Safari 6.1 | WebView Android ≤37 | Chrome Android 30 | Firefox Android 10 | Opera Android 18 | Safari iOS 6.1 | Samsung Internet Android 2.0 |
完整支持
mousedown
mouseup
mousemove
click
dblclick
mouseover
mouseout
mouseenter
mouseleave
contextmenu
元素
accessKey
属性
childElementCount
children
classList
className
clientHeight
clientLeft
clientTop
clientWidth
currentStyle
firstElementChild
id
innerHTML
lastElementChild
localName
名称
namespaceURI
nextElementSibling
onfullscreenchange
onfullscreenerror
openOrClosedShadowRoot
outerHTML
part
prefix
previousElementSibling
runtimeStyle
scrollHeight
scrollLeft
scrollLeftMax
scrollTop
scrollTopMax
scrollWidth
shadowRoot
slot
tabStop
tagName
after()
animate()
append()
attachShadow()
before()
closest()
computedStyleMap()
createShadowRoot()
getAnimations()
getAttribute()
getAttributeNames()
getAttributeNode()
getAttributeNodeNS()
getAttributeNS()
getBoundingClientRect()
getClientRects()
getElementsByClassName()
getElementsByTagName()
getElementsByTagNameNS()
hasAttribute()
hasAttributeNS()
hasAttributes()
hasPointerCapture()
insertAdjacentElement()
insertAdjacentHTML()
insertAdjacentText()
matches()
msZoomTo()
prepend()
querySelector()
querySelector()
querySelectorAll()
querySelectorAll()
releasePointerCapture()
remove()
removeAttribute()
removeAttributeNode()
removeAttributeNS()
replaceChildren()
replaceWith()
requestFullscreen()
requestPointerLock()
scroll()
scrollBy()
scrollIntoView()
scrollIntoViewIfNeeded()
scrollTo()
setAttribute()
setAttributeNode()
setAttributeNodeNS()
setAttributeNS()
setCapture()
setPointerCapture()
toggleAttribute()
afterscriptexecute
auxclick
blur
click
compositionend
compositionstart
compositionupdate
contextmenu
copy
cut
dblclick
DOMActivate
DOMMouseScroll
error
focus
focusin
focusout
fullscreenchange
fullscreenerror
gesturechange
gestureend
gesturestart
keydown
keypress
keyup
mousedown
mouseenter
mouseleave
mousemove
mouseout
mouseover
mouseup
mousewheel
MozMousePixelScroll
msContentZoom
MSGestureChange
MSGestureEnd
MSGestureHold
MSGestureStart
MSGestureTap
MSInertiaStart
MSManipulationStateChanged
overflow
paste
scroll
select
show
touchcancel
touchend
touchmove
touchstart
underflow
webkitmouseforcechanged
webkitmouseforcedown
webkitmouseforceup
webkitmouseforcewillbegin
wheel