单击图片div显示 再次单击图片div隐藏

上面的功能很好实现,但是我想的是,当div显示的时候,点击div以外的地方div隐藏,我想要一个function在<img />的onclick=""中调用这个函数,我在网上也找了很多例子,没发现很有用的,求高手赐代码,小生不胜感激!满意加分.
如图所示,类似于QQ的,当点红框地方表情显示出来,再点一下,表情隐藏,而当表情显示的时,你点表情以外的地方,隐藏表情,现在这个功能要在web中实现,想用js实现,求高手,求代码!

<SCRIPT>
function clk() {
if(document.getElementById("test").style.display=="none"){
document.getElementById("test").style.display="";
}else{
document.getElementById("test").style.display="none";
}
}

</SCRIPT>
<img src="https://gss0.bdstatic.com/70cFsjip0QIZ8tyhnq/img/logo-zhidao.gif" border="0" onclick="clk()">
<div id="test">testtesttest</div>
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-01-06
js代码:var timer;
function divBind(){ //当选择的文本框失去焦点时,且div没有获取焦点,设置div隐藏
timer=setTimeout(t,500);
}
function t(){
$("#dname").hide(); //让层隐藏
window.clearTimeout(timer);
}

这是我做一个 文本框+div 输入提示 的一个练习.
看你上面的意思,应该当div失去焦点时候,就设置隐藏,定时器都不需要了.
直接<div onblur="test()"> 图片</div>
js: function test(){
document.getElementById("div的ID").style.display=none;
}追问

不是这样的,是这样的话我都能解决了,我的意思是点击除了这个层以外的地方,隐藏该层,是单击,不是失去焦点。

追答

我刚才那个方法应该也能搞定你说的问题。
这里再推荐你一种方法.
$(document).ready(function(){
var dobj=$("#did2");
$(document).mousedown(
function(event){
if(event.target.name!=$(dobj).attr("name")){
$(dobj).hide(100);
}
}
);
});

html代码:

代码的效果是,你进入页面后点击层以外的地方,层会隐藏

本回答被网友采纳
第2个回答  2012-01-05
在body的单击事件中,如果引发事件的事件触发者不是指定的img时,隐藏div
第3个回答  2012-01-05
不明白到底点哪里。这样还不如 鼠标经过是和离开时产生 FUNCTION