我通过jquery将以下样式应用于div:
$("#content").css('width',$("#content").width()+'px');
$("#content").css('height',$("#content").height()+'px');
$("#content").css('position','fixed');
稍后在脚本中我再次移除固定位置和高度和宽度设置。
我试图通过添加一个类
来做到这一点.divStatic{
position:static;
height:auto;
width:auto;
}
$("#content").addClass('divStatic');
但是这样DIV保持其固定宽度。 如果我用jquery做,一切正常。
$("#content").css('position','static');
$("#content").css('width','auto');
$("#content").css('height','auto');
区别是什么?
答案 0 :(得分:0)
嗯,基本上CSS中有一个层次结构:
<div height="500px">
)<div style="color: blue;">
<div class="divStatic>
)由于jQuery命令添加了2. one,因此您无法使用类覆盖它,因为浏览器认为第一个更重要。 (使用第二个$(...)。css覆盖html本身的第一个)
css优先级(如SITH-power等)还有更多优点,您可以轻松找到更长,更好的解释,因为您现在知道,为什么会发生这种情况。
要解决此问题,您可以将第一个css样式移动到类中,然后确保它们不如.divStatic描述重要。
答案 1 :(得分:0)
显着的区别在于浏览器应用于元素的样式的优先级。实际优先级是:
您的jQuery内联样式声明,只需在您的元素中添加类就无法覆盖它。 我建议用这样的东西重写你的js:
$("#content").css({'width':$("#content").width()+'px', 'height':$("#content").height()+'px', 'position':'fixed'});
$(document).on('*actionName*', '.elName', function(event){
$("#content").removeAttr('style').addClass('divStatic');
});
无论如何,直接用js应用css并不是一个好习惯。尽量避免它。考虑使用jQuery addClass,并将样式放在外部样式中。 (例外 - 你只有在你真正知道自己在做什么的时候才能按照自己的方式行事)