javascript - 关于延迟顺序显示, 怎么敲代码才能优雅实现?
巴扎黑
巴扎黑 2017-04-11 12:38:52
[JavaScript讨论组]

鼠标移入<p id="test">test</p>, 2秒后在<p id="info"></p>中提示mouseenter.

鼠标移出<p id="test">test</p>, 在<p id="info"></p>中提示mouseleave.

要求leave的信息必须等mouseenter显示后,再显示(有顺序)。 应该怎么写事件?

巴扎黑
巴扎黑

全部回复(2)
伊谢尔伦

Try this:

var $test = $('#test'),
    $info = $('#info'),
    status;

$test.on('mouseenter',function(){
    status = "";
    $info.text('mouseenter').fadeOut(0).delay(2000).fadeIn(300, function(){
        status === "out" ? $(this).text('mouseleave') : status = "in";
    });
});

$test.on('mouseout',function(){
    status === "in" ? $info.text('mouseleave') : status = "out";
});
PHP中文网
<body>
<span id="btn">11111111111111</span>
</body>
<script src="http://libs.baidu.com/jquery/2.0.0/jquery.min.js"></script>
<script type="text/javascript">
var $btn = $('#btn');
var eventCallbacks = [];
var timer = null;
$btn.on('mouseenter',function(){
    clearTimeout(timer);
    eventCallbacks = [];
    eventCallbacks.push(function(){
        $btn.text('in');
    });
    var timer = setTimeout(function(){
        for(var i=0;i<eventCallbacks.length;i++){
            debugger;
            eventCallbacks[i]();
        }    
    },2000)            
});
$btn.on('mouseout',function(){
    eventCallbacks.push(function(){
        $btn.text('out');
    })
});

</script>

这么写能实现,就是看起来有些丑。

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号