首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >防止.mouseout事件执行

防止.mouseout事件执行
EN

Stack Overflow用户
提问于 2014-10-19 05:30:46
回答 1查看 65关注 0票数 0

我在这个HTML结构中列出了图像和描述:

代码语言:javascript
复制
<div class="canDo">
    <p>
        <img src="http://placehold.it/100x100" />
        <span>Description 1</span>
    </p>
    <p>
        <img src="http://placehold.it/100x100" />
        <span>Description 2</span>
    </p>
    <p>
        <img src="http://placehold.it/100x100" />
        <span>Description 3</span>
    </p>

    <p></p>
</div>

我用CSS隐藏<span>,并使用jQuery函数将描述添加到最后一个<p>中。HTML结构也被选择来处理我的响应布局。

代码语言:javascript
复制
$(document).ready( function() {
    $(".canDo img").mouseover( function() {
        $(".canDo img").removeClass('active').addClass('fade');
        $(this).addClass('active').removeClass('fade');
        $(".canDo p:last-child").fadeOut(function() {
            var msg = $('.canDo img.active').next('span').html()
            $(".canDo p:last-child").text(msg).fadeIn();
        });
    })
    .mouseout( function() {
        setTimeout(function(){
            $(".canDo img").removeClass('active fade')
            $(".canDo p:last-child").fadeOut();
        }, 3000);
    });
});

我遇到的问题是,当我将第一项和第二项悬停时(并将鼠标保持在第二项上),将执行来自第一项的mouseout函数,从而使褪色效应和文本消失。

我怎样才能防止这种情况发生呢?

我还做了一个jsFiddle

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-10-19 05:48:26

试试这个..。我想这是你想要的。如果不是的话请告诉我。

http://jsfiddle.net/bpd2Ldy1/

所以..。我所做的就是将setTimeout函数的结果(它返回一个特定的超时id)分配给变量tm。如果它被设置(意思是3秒后某物正在消失),并且用户鼠标-在另一个小盒子上,它将清除并停止超时。这使得它不与新的mouseover事件发生冲突。如果没有任何.canDo被鼠标超过,超时将在3秒后不间断地完成.

代码语言:javascript
复制
$(document).ready( function() {
    $(".canDo img").mouseover( function() {
        $(".canDo img").removeClass('active').addClass('fade');
        $(this).addClass('active').removeClass('fade');

        if (typeof(tm) != 'undefined') {
            clearTimeout(tm);
        }
        $(".canDo p:last-child").stop().fadeOut(function() {
            var msg = $('.canDo img.active').next('span').html()
            $(".canDo p:last-child").text(msg).stop().fadeIn();
        });

    })
    .mouseout( function() { 
        tm = window.setTimeout(function(){
            $(".canDo img").removeClass('active fade')
            $(".canDo p:last-child").stop().fadeOut("slow");  
        }, 3000); 
    });
});
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26447660

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档