fadeIn导致错误的事件触发

时间:2018-06-15 19:22:31

标签: jquery fadein

当鼠标移过文本然后在鼠标熄灭时向左滑动时,我希望文本为淡入淡出。滑动左侧部分运行良好,但fadeIn部分的问题是它不断导致文本淡入,然后淡出然后再次。它似乎不停地刷新页面并导致错误的事件触发(淡出)。

这是JS:

$('#text1').on('mouseenter', function(){
    if($('#container2').children().length<3){
        var newEl=document.createElement("p");
        var position=document.getElementById("container2");
        position.appendChild(newEl);
        $(newEl).html('<br>'+'Test Text');
        $(newEl).hide().fadeIn(500);
    }
});

$('#text1').on('mouseleave', function(){
    if($('#container2').children().length>1) {
    $('#container2').children().last().animate({
        opacity:0.0,
        paddingLeft:'+=80',
    },500,function () {
        $(this).remove();
    });
   }
});

我的HTML:

<div id="container">
    <div id="container2">
        <h3 id="text1">Text 1</h3>
    </div>
    <div>
    <form id="form1" onsubmit="return false">
        <select name='vType' id='vTypeName'>
    <some form>
        </select>
        <br><br>
    <some Radio boxes>
        <br>
        <input id="vsubmit" type="submit" value="Send">
    </form>
    <br>

    <div id="XXXX">
    <Some Spans>
    </div>
    <br>
    </div>
</div> 

1 个答案:

答案 0 :(得分:0)

工作演示:https://codepen.io/creativedev/pen/wXrRar

$('body').on('mouseenter','#text1',function(){
    if($('#container2').children().length<3){
        var newEl=document.createElement("p");
        var position=document.getElementById("container2");
        position.appendChild(newEl);
        $(newEl).html('<br>'+'Test Text');
        $(newEl).hide().fadeIn(500);
    }
});

$('#text1').on('mouseleave', function(){
    if($('#container2').children().length>1) {
    $('#container2').children().last().animate({
        opacity:0.0,
        paddingLeft:'+=80',
    },500,function () {
        $(this).remove();
    });
   }
});

造成问题的CSS的一部分:

h3 {
    color: red;
    float: left;
    padding: 10px 10px 10px 10px;
    text-align: center;
    font-size: 1.8em;
    font-style: bold;
    font-weight: 800;
    line-height: 0.90em;
    letter-spacing: -0.01em;
    text-transform: uppercase;
    border-left: 5px solid #c0bcc0;
    border-right: 5px solid #bcbdc0;
    border-top: 5px solid #bcbdc0;
    border-bottom: 5px solid #bcbdc0;
    margin-right: 50px;
}