取消包含在<li> </li>中的锚元素上的mousedown事件(使用普通js)

时间:2011-11-11 12:52:22

标签: javascript event-handling

我有以下标记:

<ul>
 <li id="aCont">
  <a href="http://test.com">test</a>
 </li>
</ul>

<script type="text/javascript">
document.getElementById("aCont").onmousedown= function (e) {
 //some Action
}
<script>

我无法使用e.preventDefault()e.stopPropagation()同时使用return false。是否有可能取消此活动?

由于

1 个答案:

答案 0 :(得分:2)

假设您打算停止点击锚元素导航到指定的网址,那么您需要使用“onclick”事件,而不是“onmousedown”。

对于旧式element.onsomeevent =处理程序,只有非IE浏览器将事件对象作为参数传递给函数,而IE具有window.event属性 - 因此您也需要允许这样做。

而且,当阻止与事件关联的默认操作时,IE会以不同的方式执行操作:对于IE,将事件的returnValue属性设置为false,对于非IE调用e.preventDefault()(注意“t”在“阻止”结束时 - 你在问题中拼错了)和/或从处理程序返回false。

结合所有这些:

document.getElementById("aCont").onclick = function(e) {
   // allow for IE, which doesn't pass the event object as a parameter
   if (!e) e = window.event;

   e.returnValue = false;
   if (e.preventDefault)
      e.preventDefault();

   return false;
}

(注意:你还拼写了e.stopPropagation()错误,但是你不需要这个方法 - 它会阻止事件冒泡到父元素,它不会取消默认操作。)