【问题标题】:set timeouts dynamically动态设置超时
【发布时间】:2017-01-30 14:24:57
【问题描述】:

如何清除超时的几个hover元素?

我的代码如下:

$(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);
}

问候

【问题讨论】:

  • 你能尝试形成像'cuadricula' + id 这样的键,并避免使用像['cuadricula'][id] 这样的二维数组表示法吗?
  • @Alonso:检查我的答案,看看我们如何在数组中应用多个超时。

标签: javascript jquery timeout settimeout cleartimeout


【解决方案1】:

您似乎有多个具有同一个类的元素,您可以使用它们的索引来创建一个动态的计时器数组。

查看工作中的 sn-p。

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>

【讨论】:

  • 非常感谢!!这正是我所需要的。你是最棒的!!
  • 很高兴看到这一点,接受将鼓励其他人使用此解决方案的答案:) 一切顺利。
猜你喜欢
  • 1970-01-01
  • 2019-10-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-06-13
  • 1970-01-01
  • 2015-07-04
  • 1970-01-01
相关资源
最近更新 更多