这篇文章分析的不错:http://www.cnblogs.com/shaojun/archive/2011/03/16/1986249.html
//一下三个函数解决mouseover,mouseout多次触发的问题
function contains(parentNode, childNode) {
try{
if (parentNode.contains) {
return parentNode != childNode && parentNode.contains(childNode);
} else {
return !!(parentNode.compareDocumentPosition(childNode) & 16);
}
}catch(e){}
}
function checkHover(e,target){
if (getEvent(e).type=="mouseover") {
return !contains(target,getEvent(e).relatedTarget||getEvent(e).fromElement) && !((getEvent(e).relatedTarget||getEvent(e).fromElement)===target);
} else {
return !contains(target,getEvent(e).relatedTarget||getEvent(e).toElement) && !((getEvent(e).relatedTarget||getEvent(e).toElement)===target);
}
}
function getEvent(e){
return e||window.event;
}
myElement.onmouseover
=
function
(e){
if
(checkHover(e,
this
)){
do
someting...
}
}
myElement.onmouseout
=
function
(e){
if
(checkHover(e,
this
)){
do
someting...
}
}
分享到:
相关推荐
针对标题“JS中mouseover和mouseout多次触发问题如何解决”,主要内容探讨的是在JavaScript中使用jQuery库时,处理mouseover和mouseout事件由于事件冒泡导致的多次触发问题。当用户使用鼠标在页面元素间移动时,这些...
在JavaScript和jQuery中,`mouseover` 和 `mouseout` 事件是常见的用于响应鼠标进入和离开元素的事件。然而,它们在处理嵌套元素时可能会引发一些问题,导致事件被不期望地多次触发。这是因为当鼠标从一个子元素移动...
标题提到的问题是,当鼠标经过子元素时,意外触发了父元素的`mouseout`和`mouseover`事件,从而影响了预期的效果。下面将详细讨论这个问题以及解决方案。 首先,我们需要了解`mouseover`和`mouseout`事件的工作原理...
举个例子,当一个父元素内嵌套有多个子元素时,鼠标在子元素间移动会引发多次mouseover和mouseout事件,这在多数情况下并不是我们期望的。而hover事件因为使用了mouseenter和mouseleave,所以在这种场景下能更精确地...
在ie下有mouseenter 与 mouseleave事件来替代mouseover 和 mouseout。 网上很多说法,这两个事件只有ie支持,其他浏览器不支持。 但是我在最新版本的火狐与谷歌都支持了mouseenter 与 mouseleave!!!!! 另外ie是...
在这些事件中,mouseover和mouseout是最常使用的,但是它们在某些情况下并不如想象中那样工作。为了解决这些问题,jQuery引入了mouseenter和mouseleave两个新的事件,它们与mouseout事件有很大区别,这一点非常重要...
例如,`click()`、`mouseover()`、`mouseout()`等方法用于绑定事件,`$(document).ready()`确保在DOM加载完成后执行指定的代码。 4. **动画效果(Animation)**:`fadeIn()`、`fadeOut()`、`slideToggle()`等方法为...
同时,jQuery Migrate插件可以帮助开发者解决升级过程中的兼容性问题。 总结,jQuery中文文档详尽地解释了这些概念,从基础到高级,从简单到复杂,逐步引导你成为jQuery的专家。无论你是初学者还是经验丰富的开发者...
在我们对一个dom添加mouseover和mouseout时,也就是jquery的hover事件,如果该dom有子元素,鼠标移到子元素时会触发mouseout事件,但往往实际情况我们希望在子元素上不触发out事件
使用`.on()`方法,可以轻松绑定多种类型的事件,如`click`, `mouseover`, `mouseout`等,并通过传递回调函数来定义事件触发时的行为。同时,`.off()`方法用于解绑事件,保持代码的整洁。 jQuery的动画功能让网页...
jQuery提供了一致的事件绑定和触发方式,例如`$(selector).click(function(){...})`用于绑定点击事件,`$(selector).on('event', function() {...})`则支持更多类型的事件,如`mouseover`、`mouseout`等。...
总结来说,这个案例涉及的主要知识点包括:jQuery 库的使用、事件处理(mouseover/mouseout)、DOM 操作(show/hide)、变量状态跟踪以及可选的动画效果实现。通过这些技术,我们可以创建出更互动、更具吸引力的网页...
其次,`mouseover`和`mouseout`事件是实现鼠标悬停效果的关键。当用户将鼠标移到导航菜单上时,jQuery会触发`mouseover`事件,显示详细的商品分类;当鼠标离开时,`mouseout`事件会被触发,隐藏子菜单。这种动态效果...
`click()`, `mouseover()`, `mouseout()`等方法可直接绑定相应事件,而`on()`和`off()`则用于动态绑定和移除事件。事件委托利用`delegate()`或`on()`实现,使得事件处理更加灵活。 4. **动画效果**:jQuery的动画...
使用`click()`, `mouseover()`, `mouseout()`等方法可以直接绑定相应的事件处理函数,`on()`和`off()`则可以动态添加或移除事件监听器。此外,`trigger()`可用于触发已绑定的事件。 四、动画效果 jQuery的动画功能...
- **`mouseover()`和`mouseout()`**:分别在鼠标进入和离开元素时触发。 - **`hover()`**:结合了`mouseover`和`mouseout`事件,可以用来创建悬停效果。 - **事件移除**:使用`unbind()`方法可以移除事件处理函数...
不论鼠标指针离开被选元素还是任何子元素,都会触发 mouseout 事件 只有在鼠标指针离开被选元素时,才会触发 mouseleave 事件 我们通过一个案例观察下问题: 给一个嵌套的层级绑定mouseout事件,会发现mouseout事件...
在这个特定的示例中,我们关注的是`click`事件(鼠标单击)和`mouseover`/`mouseout`事件(鼠标滑过)。 1. 鼠标单击触发(click事件): 当用户点击一个元素时,`click`事件会被触发。在tab切换的场景中,通常...