jQuery:只添加一次addClass

4

我有一个在窗口大小调整时运行的addClassremoveClass函数,使用if else语句。标记如下:

$(window).load(function() {
  resize();
});

//Every resize of window
$(window).resize(function() {
  resize();
});

//Dynamically assign height
function resize() {
  // Handler for .ready() called.
    var windowWidth = $(window).width(),
        windowHeight = $(window).height(),
        windowHeight = windowWidth / 1.7777;

        var loadwindowHeight = $(window).height(),
            loadspriteHeight = $('.spritespin-canvas').height();

            if(loadspriteHeight < loadwindowHeight) {
                $('.spritespin-canvas').addClass('height');
            } else {
                $('.spritespin-canvas').removeClass('height');
            }

}

唯一的问题是,当你调整窗口大小时,它会不断地添加和删除类,是否可能只运行addClassremoveClass函数一次?欢迎提出任何建议!

1
使用 hasClass('height') 来检查 https://api.jquery.com/hasclass/ - Sean Wessell
请使用 $(window).one('resize',func.. 而不是 **$(window).resize(func..**。 - Vixed
1个回答

4
您可以使用.hasClass
var hasHeightClass = $('.spritespin-canvas').hasClass('height');
if (loadspriteHeight < loadwindowHeight && !hasHeightClass) {
    $('.spritespin-canvas').addClass('height');
} else if (hasClass) {
    $('.spritespin-canvas').removeClass('height');
}

1
@JSG 已修复。谢谢! - Mike Cluck

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接