jQuery:鼠标再次进入会停止slideDown()效果

时间:2013-06-24 09:29:14

标签: jquery

在下一页上,将鼠标悬停在文本上会附加一个带有幻灯片效果的文本的div。问题是,当它向上滑动以删除div时,再次在文本上输入鼠标会停止滑动并且div仍然没有文本。进入和离开快速附加div。在这种情况下如何恢复滑落?

的index.html

<!DOCTYPE html>
<html>
    <head>

        <script src = "http://code.jquery.com/jquery-1.10.1.min.js" type = "text/javascript"></script>
        <script src = "script.js" type = "text/javascript"></script>
    </head>

    <body>
        <div id = "main_div" style = "width: 33%">
            <div id = "hover_div">
                <h1 style = "width: 300px; background-color: blue; margin: 0; border: 1px solid #DDDDDD" id = "text1">Hover to see the truth</h1>
            </div>
        </div>
    </body>
</html>

的script.js

$(document).ready (function() {

    $(document).on ("mouseenter", "#text1", function() {
        $("#main_div").append ("<div style = 'background-color: red; width: 300px; height: 200px; margin: 0; border: 1px solid #DDDDDD' id = 'descr'></div>");
        $("#descr")
            .hide()
            .append ("<h3 id = 'truth' style = 'float: left; height: 100px'>You're an idiot</h3>")
            .slideDown ("slow");
    });

    $(document).on ("mouseleave", "#text1", function() {
        $("#descr").slideUp ("slow", function() {
                $(this).remove();
        });
    });

    $(document).on ("mouseenter", "#descr", function() {
        $("#descr").slideUp ("slow", function() {
                $(this).remove();
        });
    });

});

演示:Fiddle

3 个答案:

答案 0 :(得分:1)

只需添加

$("#descr").remove();

之后

$(document).on ("mouseenter", "#text1", function() {

演示 - http://jsbin.com/efoqux/1/edithttp://jsfiddle.net/atif089/prS8R/6/

答案 1 :(得分:0)

$(document).on ("mouseenter", "#text1", ..函数

中尝试此操作
$("#main_div").children(":not('#hover_div')").remove().end()

Test Link

答案 2 :(得分:0)

在执行任何其他动画之前检查元素是否已设置动画。

$(document).on ("mouseenter", "#text1", function() {
     //Do not append div multiple times
     if($("#descr").length ==0){
         $("#main_div").append ("<div style = 'background-color: red; width: 300px; height: 200px; margin: 0; border: 1px solid #DDDDDD' id = 'descr'></div>");
     }

     //Guard against animation      
     if($("#descr").is(":animated")){ 
         return false;
     }

     $("#descr")
          .hide()
          .append ("<h3 id = 'truth' style = 'float: left; height: 100px'>You're an idiot</h3>")
           .slideDown ("slow");
        });

$(document).on ("mouseleave", "#text1", function() {
    //Guard against animation
    if($("#descr").is(":animated")){ 
       return false;
    }

    $("#descr").slideUp ("slow", function() {
        $(this).remove();
     });
});

$(document).on ("mouseenter", "#descr", function() {
    if($("#descr").is(":animated")){ 
        return false;
    }

    $("#descr").slideUp ("slow", function() {
        $(this).remove();
    });
});

工作示例 http://jsfiddle.net/DJTmt/