日期:2014-05-16  浏览次数:20396 次

怎么禁用特定div触发事件函数?
function divEvent(divID)
{
  var div = document.getElementById(divId);
  .......................//对div的控制省略
  div.onmouseover = showBorder; //当鼠标移动到div上的时候显示border
  div.onmouseout = hiddenBorder; //鼠标离开时隐藏border
  div.onmousedown = startMove; //这三个是用来拖动这个层的。。
  div.onmousemove = processMove;
  div.onmouseup = stopMove;

  function showBorder(evt)
  {
  div.style.border="dotted 1px black";
  div.style.cursor = "move";
  }

  function hiddenBorder(evt)
  {
div.style.border = "solid 0px black";
div.style.cursor = "default";
  }

  function startMove(evt)
  {
  }

  function processMove(evt)
  {
  }

  function stopMove(evt)
  {

  }
}

在一个父div里面,有好几个子div。
分别对这几个子div执行divEvent(divID),他们的事件处理程序都一样了。。

目的就是鼠标放在某个子层上的时候,该层就会显示边框,醒目一点,然后可以拖动。。只有一个div的话肯定没有什么问题,可是我这里有好几个div,拖动某个div的过程中,如果经过了其他div,就会触发其他div的onmouseover事件,就拖不下去了,有没有什么办法让拖动一个div的时候,让其他的div不能响应事件呢,这样就可以让这个div正确的处理拖动,等这个拖动结束了,再让其他的div可以响应事件。


------解决方案--------------------

div.onmousedown = startMove; //这三个是用来拖动这个层的。。 
div.onmousemove = processMove; 
div.onmouseup = stopMove; 
在startmove里给div设置一个值比如canmove=true
然后在processmove里判断该值如果canmove则可以移动否则返回不能移动,
最后在stopmove里设置canmove=false
------解决方案--------------------
嗯,基本思路就是自定义一个变量,来指示当前是否有div处于被拖动状态