+ -
当前位置:首页 → 问答吧 → 点(回复)显示本留言的回复div 点别的区域div隐藏 的问题..

点(回复)显示本留言的回复div 点别的区域div隐藏 的问题..

时间:2011-08-25

来源:互联网

就是很多留言每个留言都有回复连接 点击后显示回复对话框 点别的区域消失 ,就和平时网站上的一样,一次只显示一个回复留言框...不知道 怎么下手, 只能点开 不能点击别的区域关闭....


第一步:在js中定义一个变量用来保存鼠标是否在div中这个状态:var isOut=true;(默认不再区域中)
第二步:在div中加上onmouseover和onmouseout事件,用来控制变量isOut:
<div id="codediv" onmouseover="isOut=false" onmouseoout="isOut=true"/>
第三步:在显示div的事件中加入取消事件冒泡的语句:(因为这个事件也会触发document.onmousedown)
event.cancelBubble=true;
第四步:为document添加onmousedown事件:
document.onmousedown=function(){
var codediv=document.getElementById("codediv");
if(codediv.style.display!="none" && isOut){
codediv.style.display!="none";
}
}

这个是找的一个解决办法 可是没反应 能不能解释一下,我把他简化
document.onmousedown=function(){
  var codediv=document.getElementById("codediv");
  if(codediv.style.display!="none"){
  codediv.style.display="none";
  }
就是不管点哪里都关闭...<div id="codediv" onmouseover="isOut=false" onmouseoout="isOut=true"/>
div里貌似没有这两个事件...
求解法...

作者: fck001   发布时间: 2011-08-25

楼主的意思是 元素取得焦点是<div id='message'>...</div>显示,也就是 onclick display:block
然后点击其他元素的时候 #message 隐藏 ,可以试试 onblur 事件,支持div标签的http://www.w3school.com.cn/htmldom/event_onblur.asp

作者: dream1206   发布时间: 2011-08-25

或者用JQuery $("[id!='message']").mousedown

作者: dream1206   发布时间: 2011-08-25

实现思路是:
判断被鼠标按下时的元素 的所有父元素中是否包含了codediv,没有包含则可以知道鼠标是在codediv之外单击的,则隐藏。

还是jquery给力啊,给个jquery实例供参考:
JScript code

$(document).mouseup(function(event){
    if($(event.target).parents("#codediv").length==0){
        $("#codediv").hide();
    }
})


作者: diyle   发布时间: 2011-08-25

哎呀,意思都没弄清就回复了唉

作者: dream1206   发布时间: 2011-08-25