div mouseenter()或hover(),delay(),fadeIn(),多个div条目,小于延迟时间jQuery

时间:2018-06-02 03:49:16

标签: javascript jquery delay

我试图解决这个问题但没有成功。我已经尝试了多个代码调整。 事情是。我得到一个div当div mouseenter()它会增加大小而css为另一个div会在延迟后改变。当mouseleave()时,它将全部设置为开头。一切正常。 问题是,当你在小于延迟时间的时间段内多次输入相同的div时(让我们说500毫秒内的2倍),它会显示内部div并让它看到,即使鼠标不在div中。 拜托,您能否建议让它成功实现? 这是一个工作小提琴有两种可能性,我使它工作,没有成功提到的问题。谢谢你的任何建议。
PS:已经尝试过if(){(div).width()> 110}也没有成功,它总是开放的 https://jsfiddle.net/spanwair/1xzvq55x/

$( ".levaruka" ).hover(function() {
    $(".insidelevaruka").stop(true, true).each(function() {
        setTimeout(function() { 
            $(".insidelevaruka, .e1").fadeIn();                
    }, 600);
    });
    $(this).css({"width": "350px", "height": "350px"});}, function() {
    $(".insidelevaruka").css({"display":"none"});
    $(this).css({"width": "100px", "height": "100px"});
    $(".e1").stop(true, true).css({"display":"none"});
    });


  $(".pravaruka").mouseenter(function() {
    $(".insidepravaruka").delay(600).fadeIn();});
       $(".pravaruka").mouseleave(function() {
    $(".insidepravaruka").hide();});

1 个答案:

答案 0 :(得分:1)

https://jsfiddle.net/amke9jLh/

$( ".levaruka" ).hover(function() {

    $(".insidelevaruka").attr("hover",1);

    $(".insidelevaruka").finish(true, true).each(function() {
        setTimeout(function() { 
        if($(".insidelevaruka").attr("hover")==1){
          $(".insidelevaruka").fadeIn();
            $(".e1").fadeIn();
            }

    }, 1000);
    });
    $(this).css({"width": "350px", "height": "350px"});
}

settimeout有时会触发延迟,因此在显示数据之前不会检查悬停是否仍然存在。

我在insidelevaruka上添加了一个属性。调用hover,设置为1并在第二部分重置

function() {

    $(".insidelevaruka").attr("hover",0);
    $(".insidelevaruka").css({"display":"none"});
    $(this).css({"width": "100px", "height": "100px"});
    $(".e1").stop(true, true).css({"display":"none"});

});

  $(".pravaruka").mouseenter(function() {
    $(".insidepravaruka").delay(600).fadeIn();
  });
$(".pravaruka").mouseleave(function() {
    $(".insidepravaruka").hide();

}

它现在似乎正常工作,请检查