Javascript 单击任意位置显示/隐藏并隐藏
我有一个充当工具提示的div,以及一个显示此工具提示的链接。这部分很好用Javascript 单击任意位置显示/隐藏并隐藏,javascript,mootools,show-hide,Javascript,Mootools,Show Hide,我有一个充当工具提示的div,以及一个显示此工具提示的链接。这部分很好用 <div class="tooltip"> <span class="tooltip_help"> <a onclick="toggleTooltips('tooltip1');" title="Tip"> <img src="/ca/images/general/tooltip.png" alt="tooltip icon" ti
<div class="tooltip">
<span class="tooltip_help">
<a onclick="toggleTooltips('tooltip1');" title="Tip">
<img src="/ca/images/general/tooltip.png" alt="tooltip icon" title="Tip" align="absmiddle" border="0" />
</a>
</span>
<div id="tooltip1" class="tooltip_box">
<span>
tip text here.
</span>
</div>
</div>
提示文本在这里。
我试图做的是设置它,这样它就可以通过单击页面上的任何位置(包括div本身内部)隐藏起来。我已经很接近拥有它了,但它有时需要双击,有时会根据页面上任何地方的点击来显示自己。这是用mootools做的
<script language="javascript" type="text/javascript">
function toggleTooltips(id) {
var e = document.id(id);
if(e.style.display=='block') {
e.style.display='none';
document.removeEvent('click', function() {
toggleTooltips(id);
});
} else {
e.style.display='block';
document.addEvent('click', function() {
toggleTooltips(id);
});
}
}
</script>
功能切换工具提示(id){
var e=document.id(id);
if(e.style.display=='block'){
e、 style.display='none';
document.removeEvent('单击',函数()){
切换工具提示(id);
});
}否则{
e、 style.display='block';
document.addEvent('单击',函数()){
切换工具提示(id);
});
}
}
任何帮助都将不胜感激。我不是mootools专家,但我认为您需要使用完全相同的函数调用
addEvent
和removeEvent
,而不是两个做相同事情的函数。我的猜测是mootools无法删除click侦听器,因为它正在寻找一个尚未实际注册的函数。也就是说,它在寻找函数A,但您注册的函数是函数B。它们做相同的事情,但它们不是相同的函数
结果是文档上的click监听器永远不会被删除,而是在每次单击时切换元素,并且每次都添加一个新的切换函数。单击几次后,单击文档中的任意位置会导致元素来回切换X次。如果X是一个奇数,那么它似乎和预期的一样工作。如果是偶数,就不会有任何明显的效果
试试这个
function toggleTooltip(id) {
var e = document.id(id);
if( !e.toggleCallback ) {
e.toggleCallback = function() { toggleTooltip(id); };
}
if(e.style.display=='block') {
e.style.display='none';
document.removeEvent('click', e.toggleCallback);
} else {
e.style.display='block';
document.addEvent('click', e.toggleCallback);
}
}
我还建议您不要使用onclick
属性,因为您已经在使用mootools了。相反,请设置一个事件侦听器,以便在加载文档时触发。然后使用它找到需要切换的元素,并在那里设置所有内容
编辑:我的意思是:你真是天赐之物。我不能完全让你的psuedo代码工作,但这个链接工作得很好!