2017-10-17 71 views
0

我在使用jQuery向div添加类时遇到问题:在此过程中,我还需要向<body>添加一些样式。如果添加了类,jQuery添加样式?

我有这样的事情:

<body> 
..... 
<div="class-one"></div> 

,我知道如何添加一个类.class-one与使用jQuery click事件处理程序,但在同一时间,我需要overflow: hidden被添加到<body>
我jQuery代码是:

$('body').on('click', '.button', function() { 
    $(".class-one").toggleClass("active"); 
}); 

这是确定的,但我怎么能在.class-one切换.active下课后添加一个风格<body>?我的意思是如果.class-one获得ACTIVE,那么<body>应该获得overflow:hidden

谢谢!

回答

0
var elements = document.getElementsByClassName("class-one"); 
elements[0].style.display="none"; 

U可以使用该代码。

0

你可以给jQuery和CSS这样的:

$('body').on('click', '.button', function() { 
    $(".class-one").toggleClass("active"); 
    $("body").toggleClass("overflow"); 
}); 

body.overflow{ 
    overflow:hidden; 
} 
0

使用this关键字。在这里我已经展示了如何改变点击元素的风格。

$('body').on('click', '.button', function() { 
     $(".class-one").toggleClass("active"); 
     $(this).css('background-color', '#ff0000'); 
    }); 

而不是点击,我想建议鼠标悬停方法

$('body').mouseover(function() { 
    $(this).css('background-color', '#ff0000'); 
}) 

;

+0

切换意味着,如果类是有它会删除它,如果类不存在这将增加它。操作只在该类处于活动状态时才添加。所以使用jQuery,你将不得不使用hasClass或$(“.active”)。或者使用css来达到它的目的。使用“this”时,除非使用hasclass进行检查,否则每次都会添加它 – user5014677

0

你可以试试这段代码,当.button添加class active时,body overflow被隐藏,否则会溢出auto。

jQuery('body').on('click', '.button', function() { 
    jQuery(".class-one").toggleClass("active"); 
    if (jQuery('.class-one').hasClass('active')) { 
     jQuery('body').css('overflow', 'hidden'); 
    }else{ 
     jQuery('body').css('overflow', 'auto'); 
    } 
}); 
0

您可以使用标志。如果.active最初不在.class-one上,我们可以将该标志设置为false(否则为true)。然后只要每次点击就来回切换(真/假)。如果标志是true - 这意味着.active类已被添加,所以适用的样式body

var isActive = false; 
$('body').on('click', '.button', function() { 
    $(".class-one").toggleClass("active"); 
    isActive = isActive ? false : true; 
    if(isActive) $('body').css("overflow", "hidden"); else $('body').css("overflow", "auto"); 
});