这是我的代码:

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

        $('#pc1').show();
        $('#pc1a').show(800);
    },
    function(){
        $('#pc1').hide();
        setTimeout(function(){$('#pc1a').hide();}, 5000);
        $('#pc1a').mouseenter(function(){
        clearTimeout(function(){$('#pc1a').show();});
        });
        $('#pc1a').mouseleave(function(){
            $('#pc1a').hide(800);
        });
    });


我想要的是,一旦用户浮动鼠标进入div,$('pc1a')div保持不变(这样就不会调用setTimeout(hide()))。似乎使用stop()可以轻松解决问题; ,clearTimeout();或clearQueue();但是我不确定如何根据我的情况正确调用这些方法。您能给我建议并帮助我找到解决方案吗?

先感谢您

最佳答案

clearTimeout接受以前的计时器句柄,而不是函数。保存setTimeout的返回值,然后在以后使用该值取消它。

例如:

$(".pc2").hover(
    function () {
        $('#pc1').show();
        $('#pc1a').show(800);
    },
    function () {
        var timer;

        $('#pc1').hide();
        timer = setTimeout(function () {     // <== Save it
            $('#pc1a').hide();
        }, 5000);
        $('#pc1a').mouseenter(function () {
            clearTimeout(timer);             // <== Cancel it
        });
        $('#pc1a').mouseleave(function () {
            $('#pc1a').hide(800);
        });
    }
);

09-26 10:30