JQuery:如何使用事件监听器进行动画?

时间:2014-02-24 00:49:37

标签: jquery resize

$(function(){
    if($(window).width()>1100){
        $("#logo").hover(function(){
            $(this).animate({paddingTop:"0px",paddingBottom:"20px"},200);
            },function(){
                $(this).animate({paddingTop:"20px",paddingBottom:"0"},200);
                });
        }
    $(window).resize(function(){
        if($(window).width()>1100){
            $("#logo").hover(function(){
                $(this).animate({paddingTop:"0px",paddingBottom:"20px"},200);
                },function(){
                    $(this).animate({paddingTop:"20px",paddingBottom:"0"},200);
                    });
            }
        });
    });

目前,此动画仅在窗口宽度大于1100像素时执行,但如果浏览器动态调整大小,则需要刷新浏览器。如何解决这个问题,以便不需要浏览器刷新?

2 个答案:

答案 0 :(得分:1)

根据窗口大小在resize事件中注册/取消注册处理程序。

$(function () {
    $(window).resize(function () {
        if ($(window).width() > 1100) {
            $("#logo").on('mouseenter.anim', function () {
                $(this).animate({
                    paddingTop: "0px",
                    paddingBottom: "20px"
                }, 200);
            }).on('mouseleave.anim', function () {
                $(this).animate({
                    paddingTop: "20px",
                    paddingBottom: "0"
                }, 200);
            });
        } else {
            $("#logo").off('mouseenter.anim mouseleave.anim');
        }
    }).resize();
});

演示:Fiddle

答案 1 :(得分:0)

命名你的函数,并像这样收听resize事件:

$(window).on("resize", yourfunction());