在mouseover和mouseout上使用fadeOut()和fadeIn()

twi*_*zle 1 jquery fadeout fadein

我的问题是,当我在mouseover上使用fadeOut()和在mouseout()(在<li>组件上)使用fadeIn()时,我没有得到我期望的结果.会发生的事情是,有时当鼠标不在对象上时,我想要fadeOut()的按钮只是在循环中保持淡入和淡出,有时循环停止,有时则不然.

使用鼠标悬停和鼠标悬停使用fadeOut和fadeIn的正确方法是什么?

这是代码:

comment.onmouseout = function() {mouseOut(comment);};
comment.onmouseover = function() {mouseOver(comment);}; 
Run Code Online (Sandbox Code Playgroud)

其中comment是一个基本的<li>,按钮作为子项

function mouseOut(parent){
    var children = parent.childNodes;
    var i=0;
    for(i=1;i<children.length;i++){
        if(children.item(i).tagName=="INPUT"){
            $(children.item(i)).fadeOut();
        }
    }
}
function mouseOver(parent){
    var children = parent.childNodes;
    var i=0;
    for(i=1;i<children.length;i++){
        if(children.item(i).tagName=="INPUT"){
            $(children.item(i)).fadeIn();
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

Gab*_*oli 5

这是因为当不透明度达到0时,显示器设置为无.因此该元素消失,使鼠标移开.

引用.fadeOut()

.fadeOut()方法为匹配元素的不透明度设置动画.一旦不透明度达到0,显示样式属性将设置为none,因此该元素不再影响页面的布局.

因此,animate不透明度会更好

而不是淡出

$(children.item(i)).animate({opacity:0},  400);
Run Code Online (Sandbox Code Playgroud)

而不是fadein

$(children.item(i)).animate({opacity:1},400);
Run Code Online (Sandbox Code Playgroud)

另一个问题是动画排队.所以你最好在开始下一个动画之前停止当前动画.

而不是淡出

$(children.item(i)).stop().animate({opacity:0},  400);
Run Code Online (Sandbox Code Playgroud)

而不是fadein

$(children.item(i)).stop().animate({opacity:1},400);
Run Code Online (Sandbox Code Playgroud)

如果您可以发布HTML,那么发布纯jquery代码来处理整个问题会更容易.