2010-04-13 72 views
1

冒泡我有一个HTML结构,如:从主DIV,而不是“A”或“UL”或“礼”的标签,才触发停止事件在Javascript

<div onmouseover="enable_dropdown(1);" onmouseout="disable_dropdown(1);"> 

      My Groups <a href="#">(view all)</a> 
      <ul> 
       <li><strong>Group Name 1</strong></li> 
       <li><strong>Longer Group Name 2</strong></li> 
       <li><strong>Longer Group Name 3</strong></li> 
      </ul> 

      <hr /> 

      Featured Groups <a href="#">(view all)</a> 
      <ul> 
       <li><strong>Group Name 1</strong></li> 
       <li><strong>Longer Group Name 2</strong></li> 
       <li><strong>Longer Group Name 3</strong></li> 
      </ul> 

</div> 

我想要的onmouseout事件在div内!

我的onmouseout功能如下:

function disable_dropdown(d) 
{ 
    document.getElementById(d).style.visibility = "hidden"; 
} 

是否有人可以告诉我怎么可以停止冒泡事件?我尝试了其他网站上提供的解决方案(stopPropogation等),但我不确定如何在此上下文中实现它们。

任何帮助将不胜感激。

非常感谢!

+0

关于区别的一些信息:preventDefault()方法,stopPropagation()stopImmediatePropagation()返回false http://markupjavascript.blogspot.in/2013/10/event-bubbling-how -to-prevent-it.html – 2013-10-27 16:51:51

回答

0

您确实想要使用的事件是onmouseenter and onmouseleave,但是它们并未在所有浏览器中实现。你可以自己去实现它们,但是在这种情况下,使用一个已经解决了跨浏览器问题的库会更好。所以,在jQuery的

<div id="main"> 

      My Groups <a href="#">(view all)</a> 
      <ul> 
       <li><strong>Group Name 1</strong></li> 
       <li><strong>Longer Group Name 2</strong></li> 
       <li><strong>Longer Group Name 3</strong></li> 
      </ul> 

      <hr /> 

      Featured Groups <a href="#">(view all)</a> 
      <ul> 
       <li><strong>Group Name 1</strong></li> 
       <li><strong>Longer Group Name 2</strong></li> 
       <li><strong>Longer Group Name 3</strong></li> 
      </ul> 

</div> 
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script> 
<script type="text/javascript"> 
    $('#main').hover(function() { enable_dropdown(1); }, // mouseenter 
         function() { disable_dropdown(1); }); // mouseleave 
</script> 
+0

谢谢拉斯!使用Jquery使它简单得多! – 2010-04-13 20:23:50

+0

@Kartik - 很高兴为您提供帮助。在JavaScript问题的stackoverflow上有很多“只使用jQuery”的答案,可以用普通的JavaScript轻松解决。这个,虽然可以用普通的JavaScript比较容易解决(需要将事件对象传递给事件处理函数,然后检查引发该事件的元素是所讨论的div,并且光标不在边界内div),jQuery将大大简化解决方案所需的代码。 – 2010-04-13 20:30:23