12

所以,我有这些 h1 元素是链接,我想向它们添加一个类,并在元素悬停后淡入该类,然后 onMouseOut 删除该类,同时淡化该类。但是使用淡入淡出功能对我没有任何作用。看到它隐藏了元素。有任何想法吗?

jQuery(".categories h1 a").hover(
function () {
    jQuery(this).fadeIn("slow").addClass("active");
},
function(){
    jQuery(this).fadeOut("slow").removeClass("active");
});
});

谢谢!

编辑:::

jQuery("h1").hover(function() {
      jQuery(this).stop().animate({ backgroundColor: "#a7bf51"}, 800);
      },function() {
      jQuery(this).stop().animate({ backgroundColor: "#FFFFFF"}, 800);
      });
});
4

6 回答 6

13

尝试使用 jQuery UI .addClass.removeClass

$(function() {
    $(".categories h1 a").hover(function() {
        $(this).stop(true,true).addClass("active", 500);
    }, function() {
        $(this).stop(true,true).removeClass("active", 100);
    });    
});

演示(由于某种原因,它第一次没有正确设置动画(淡入淡出)......但之后它工作正常)

编辑:更新完整性。

您也可以使用它.animate来获得想要的效果。见下文,

$(function() {
    $(".categories h1 a").hover(function() {
        $(this).stop().animate({
            backgroundColor: "#a7bf51"
        }, 800);
    }, function() {
        $(this).stop().animate({
            backgroundColor: "#FFFFFF"
        }, 800);
    });

});

演示

于 2012-05-03T21:20:21.203 回答
8

如果您不想使用 jquery UI,因为这将是一个额外的负载,您可以执行以下操作:

(在我的应用程序中使用“隐藏”引导类时对我很有用)

删除类时慢慢淡入:

$('.myClass').removeClass('hidden').fadeOut(0).fadeIn(10000)

慢慢淡出,添加类然后淡入:

$('.myClass').fadeOut(1000, function(){
    $(this).addClass('hidden'); //or any other class
}).fadeIn(10000)

希望这将简化某人的任务!

于 2016-07-16T17:35:10.063 回答
2

听起来您希望该类的样式淡入。您应该为此查看 animate() : http: //api.jquery.com/animate/

fadeIn 只是淡入元素。

于 2012-05-03T21:08:21.283 回答
1

我不认为你可以在类之间交叉淡入淡出,但你可以使用该animate功能。 animate允许您在指定时间内影响任何 css 变量。

http://api.jquery.com/animate/

我知道这会从 css 文件中删除一些样式,但同样,我不认为 jQuery 会在类之间交叉淡入淡出。

于 2012-05-03T21:10:40.973 回答
1

如果你加载了 jQuery UI 库,你可以为 toggleClass 函数设置一个额外的参数。

通过 css 设置不透明度。

h1 a {
  opacity:0.8;
}

h1 a.hovered {
  opacity: 1.0;
}

然后

jQuery(".categories h1 a").hover(function(e) {
    $(this).toggleClass('hover', 1000);
}

1000 是事件的毫秒计数器。因此,当悬停一秒钟时效果应该淡出到 1.0 不透明度,不悬停时效果应该在 1 秒内淡出。

于 2012-05-03T21:11:18.753 回答
0

试试这个,这是 jsFiddle(在此处输入链接描述):

<script type="text/javascript">
    jQuery(".categories h1").hover(function () {
            jQuery(this).stop().animate({ "background-color": "#a7bf51"}, 800);
            jQuery(this).addClass("active");
            jQuery(this).find("a").fadeIn("slow");
        },
        function() {
            jQuery(this).stop().animate({ "background-color": "#FFFFFF"}, 800);
            jQuery(this).addClass("active");
            jQuery(this).find("a").fadeOut("slow");
    });
</script>
<style type="text/css">
    .categories h1 {
        background-color: rgb(200, 200, 200);
        display: block;
        padding: 5px;
        margin: 5px;
        width: 100px
    }
    .categories h1 a {
        display: none;
    }
</style>
<div class="categories">
    <h1><a href="#">Item 1</a></h1>
    <h1><a href="#">Item 2</a></h1>
    <h1><a href="#">Item 3</a></h1>
</div>​
于 2012-05-03T21:37:08.650 回答