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

js能否识别一定范围的鼠标点击?
例如:
<body>
<div id="d1">
  <a id="a1">
  <input type="button"  id="btn1" >
</div>
<div id="d2">
  <a id="a2">
  <input type="button"  id="btn2" >
</div>
<div id="d3">
   <a id="a3">
  <input type="button"  id="btn3" >
</div>
...................
</body>

当点击 不是 div  d1 里面的按钮或链接时,需要提醒用户,有没有什么方法可以做到?

如果在其他按钮或链接处添加检测,需要添加的东西太多!

------解决方案--------------------
注意你的html标签要记得写结束标记,要不在ie下有问题
<body>
<div id="d1">
  <a id="a1">a1</a>
  <input type="button" id="btn1" >
</div>
<div id="d2">
  <a id="a2">a2</a>
  <input type="button" id="btn2" >
</div>
<div id="d3">
  <a id="a3">a3</a>
  <input type="button" id="btn3" >
</div>
</body>
<script type="text/javascript">
function parentNodeIsD1(o){//判断点击的对象的父节点是否为d1
  do{
    if(o.id=='d1')return true;
  }while(o=o.parentNode)
  return false;
}
document.onclick=function(e){
  e=e
------解决方案--------------------
event;
  var o=e.srcElement
------解决方案--------------------
e.target;
  if(parentNodeIsD1(o)){alert('点击了div id为d1里面的内容');}
  else{
    alert('请点击div id为d1里面的内容');
    //下面为阻止事件触发的代码
    if(e.preventDefault)e.preventDefault();
    else e.returnValue=false;
  }
}
</script>

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

阻止事件冒泡,给div和其子元素都添加上事件;
子元素的事件执行其他操作,div的事件就给提示