2016-09-22 238 views
0

如何清理几个悬停元素的超时?动态设置超时时间

我的代码如下:

$(document).ready(function(){ 
    $(".imagenesC").hover(imagenesCEntrada,imagenesCSalida); 
}); 

var timeouts = {}; 
function imagenesCEntrada(){ 
    var id=$(this).attr("id"); 
    clearTimeout(timeouts['cuadricula'][id]); 
    $("#"+id).stop(true).animate({"opacity":"0"},1000); 
} 

function imagenesCSalida(){ 
    var id=$(this).attr("id"); 
    timeouts['cuadricula'][id] = setTimeout(function(){ 
     $("#"+id).stop(true).animate({"opacity":"1"},1000); 
    }, 100); 
} 

问候

+0

可以尝试像形成' 'cuadricula' + id'键,避免去为2维数组符号像'[ 'cuadricula'] [ID]'? – vijayP

+0

@Alonso:查看我的答案,了解我们如何在数组中应用多个超时。 –

回答

0

看来你已经与同一个类中的多个元素,你可以使用它们的索引创建的动态数组计时器。

请参阅工作片段。

var timer = []; 
 

 
$('.label').mouseenter(function(){ 
 
    clearTimeout(timer[$(this).index()]); 
 
    console.log("Mouse enter"); 
 
    $('#' + this.id + ' div').slideDown('slow'); 
 
}); 
 
$('.label').mouseleave(function(){ 
 
    var temp = $('#' + this.id + ' div'); 
 
    timer[$(this).index()] = setTimeout(function() { 
 
     console.log("Mouse leave"); 
 
     temp.stop().slideUp('slow'); 
 
    }, 2000); 
 
}); 
 

 

 
$(document).ready(function(){ 
 
    $(".imagenesC").hover(imagenesCEntrada,imagenesCSalida); 
 
}); 
 

 
var timeouts = []; 
 
function imagenesCEntrada(){ 
 
    var id=$(this).attr("id"); 
 
    clearTimeout(timeouts[$(this).index()]); 
 
    console.log("clear"); 
 
    $("#"+id).stop(true).animate({"opacity":"0"},1000); 
 
} 
 

 
function imagenesCSalida(){ 
 
    var id=$(this).attr("id"); 
 
    console.log("enter"); 
 
    timeouts[$(this).index()] = setTimeout(function(){ 
 
     $("#"+id).stop(true).animate({"opacity":"1"},1000); 
 
    }, 100); 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div class="label" id="dummyId1">Demo1</div> 
 
<div class="label" id="dummyId2">Demo2</div> 
 
<div class="label" id="dummyId3">Demo3</div> 
 
<div class="label" id="dummyId4">Demo4</div> 
 

 

 

 
<div class="imagenesC" id="imagenesC1">imagenesC1</div> 
 
<div class="imagenesC" id="imagenesC2">imagenesC2</div> 
 
<div class="imagenesC" id="imagenesC3">imagenesC3</div> 
 
<div class="imagenesC" id="imagenesC4">imagenesC4</div>

+0

非常感谢你! 这正是我需要的。 你是最棒的! – Alonso

+0

很高兴看到这一点,接受将鼓励他人使用此解决方案的答案:)一切顺利。 –