2012-12-02 178 views
2

即时通讯新手到大多数网络开发的东西,所以我请求你一些支持。 我有一个图像映射,其中我分配了几个区域触发不同的内容在一个单独的股利。我现在想为onmouseover触发器添加一个延迟,以便只有当用户将光标定位在该区域上时,才更新div中的内容,而不是意外地将光标悬停在该区域上。延迟onmouseover javascript

这是JS我使用用于切换DIV内容:

function showHideDivs(indx){ 
hideDivs(); 
oShowHideDivs[indx].style.display = 'block'; 
} 

function hideDivs(){ 
for(i=0; i < oShowHideDivs.length; i++){ 
    oShowHideDivs[i].style.display = 'none'; 
} 
} 

window.onload=function(){ 
oShowHideDivs = document.getElementById('container').getElementsByTagName('div'); 
var oMap = document.getElementById('myMap'); 
for(i=0; i < oMap.areas.length; i++){ 
    oMap.areas[i].indx = i; 
    oMap.areas[i].onmouseover=function(){ 
     showHideDivs(this.indx); 
    } 
    } 
} 

那么,如何实现延迟,在哪里? thx提前! 扬

编辑: 我现在用这个办法:

oMap.areas[i].onmouseover=function(){ 
var area=this; 
var delay=setTimeout(function(){showHideDivs(area.indx);},100); 
area.onmouseout=function(){clearTimeout(delay);}; 
} 

似乎最简单的给我。 thx的提示!

+0

你愿意使用jQuery吗? 看看[这个问题](http://stackoverflow.com/questions/10933828/a-function-to-check-if-the-mouse-is-still-hovering-an-element-every-10-milliseco )和[this jsfiddle](http://jsfiddle.net/z8yaB/)。 – rosshamish

回答

1

最简单的方法是,包括鼠标悬停超时,并清除鼠标移开时。

oMap.areas[i].onmouseover=function(){ 
    var area=this; 
    var delay=setTimeout(function(){showHideDivs(area.indx);},100); 
    area.onmouseout=function(){clearTimeout(delay);}; 
} 

对于更复杂的场景,请使用像hoverintent这样的插件。