на jQuery.addClass and.fadeIn?

Итак, у меня есть эти элементы h1, которые являются ссылками, и я хочу добавить к ним класс и удалить этот класс, как только элемент будет наведен, а затем onMouseOut удалит класс, В то время как исчезает класс. Но использование функции fade ничего не делает для меня. Видя, как он скрывает элемент. Есть идеи?

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

спасибо!

EDIT:::

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

6 ответов


попробуйте использовать 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);
    });    
});

демо (по какой-то причине он не анимируется должным образом (исчезает) в первый раз.. но затем он отлично работает)

Edit: обновлено для полноты.

вы также можете использовать .animate чтобы получить желаемый эффект. Смотрите ниже

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

});

демо


Если вы не хотите использовать jQuery UI, потому что это будет дополнительная нагрузка, вы можете сделать следующее:

(было полезно для меня, когда "скрытый" класс bootstrap используется в моем приложении)

медленно исчезают при удалении класса:

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

медленно исчезают, добавляют класс, а затем исчезают обратно в:

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

надеюсь, это упростит чью-то задачу!


звучит так, как будто вы хотите, чтобы стили класса исчезли. Вы должны посмотреть в animate () для этого:http://api.jquery.com/animate/

fadeIn просто исчезает в элементе.


Я не думаю, что вы можете переходить между классами, но вы можете использовать . animate позволяет влиять на любую переменную css в течение указанного времени.

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

Я знаю, что удаляет некоторый стиль из файла css, но опять же, я не думаю, что jQuery будет пересекаться между классами.


Если у вас загружена библиотека пользовательского интерфейса jQuery, вы можете установить дополнительный параметр для функции 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 секунду, когда не зависал.


попробуйте это, и вот 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>​