两个小提琴的故事(请使用运行按钮后,jsfiddle页面加载,以更清楚地了解正在发生的事情)。
简单至极:
$("body").addClass("noScroll");
alert($("body").hasClass("noScroll"));
$("body").removeClass("noScroll");
alert($("body").hasClass("noScroll"));
使用此css:
.noScroll {
background-color: pink;
position: fixed;
width: 100%;
top: 200px;
}
我们有课。类被添加到body中,从而改变身体的外观/行为。类从主体中移除,主体恢复为默认值。按预期工作。
$("body").addClass("noScroll");
alert($("body").hasClass("noScroll"));
$(".noScroll").css({
"background-color" : "pink",
"position" : "fixed",
"width" : "100%",
"top" : "200px"
});
$("body").removeClass("noScroll");
alert($("body").hasClass("noScroll"));
这次没有随附的CSS,因为它是由jQuery添加的,但在其他方面与上面的非常相似。工作到了一定程度。CSS是被应用的,但是它没有被删除。为什么会发生这种情况?
谢谢!
发布于 2015-05-14 22:43:03
发布于 2015-05-14 22:42:54
内联样式和CSS类是两个不同的概念。添加和删除一个不能添加或移除另一个。内联样式仅覆盖通过类应用的样式。
用于查找要应用内联样式的元素的选择器不会存储在任何地方。因此,当您删除类时,jQuery/浏览器不可能知道要删除哪些内联属性。
发布于 2015-05-14 22:43:51
您已经在第二个示例中应用了内联CSS。这相当于这样做:
<body style="background-color:pink; position:fixed; width:100%; top:200px;">
...over此(第一个示例):
<body class="noScroll">
...which显然是通过removeClass(...)
函数调用删除的。
https://stackoverflow.com/questions/30248619
复制相似问题