Javascript 使用jQuery更新CSS属性
假设我有以下html:Javascript 使用jQuery更新CSS属性,javascript,jquery,css,Javascript,Jquery,Css,假设我有以下html: ... <div class="thinger">...</div> <div class="thinger">...</div> <div class="thinger">...</div> ... 这将生成如下所示的html: $(".thinger").css("width",someWidth); <div class="thinger" style="width: 50px;"&g
...
<div class="thinger">...</div>
<div class="thinger">...</div>
<div class="thinger">...</div>
...
这将生成如下所示的html:
$(".thinger").css("width",someWidth);
<div class="thinger" style="width: 50px;">...</div>
<div class="thinger" style="width: 50px;">...</div>
<div class="thinger" style="width: 50px;">...</div>
...
<style>
.thinger {
width: 50px;
}
</style>
...
<div class="thinger">...</div>
<div class="thinger">...</div>
<div class="thinger">...</div>
...
var styleElement = document.createElement('style');
styleElement.type = "text/css";
styleElement.innerHTML = ".thinger {width:" + maxWidth + ";}";
document.getElementsByTagName('head')[0].appendChild(styleElement);
但我不想处理浏览器不一致的问题,我想确保我是以“jQuery方式”做事的。有什么理由选择一种方法而不是另一种 您可以创建
样式
元素并将其附加到头
中,就像DOM中的任何其他元素一样,但是这是浪费时间
最好的方法是在样式表中设置类规则,并将类添加到这些元素中。这样可以更好地分离关注点,这有利于代码重用和以后的维护
我无法在样式表中设置类规则,因为我不知道运行前的宽度
在这种情况下,当前使用
css()
的方法是最好的。您可以创建样式
元素并将其附加到头
,就像您在DOM中使用任何其他元素一样,但是这是浪费时间
最好的方法是在样式表中设置类规则,并将类添加到这些元素中。这样可以更好地分离关注点,这有利于代码重用和以后的维护
我无法在样式表中设置类规则,因为我不知道运行前的宽度
在这种情况下,当前使用
css()
的方法是最好的。这是一个全过程读取这是一个全过程读取是的。您可以使用jQuery.addClass()
和.removeClass()方法添加或删除类
$('#myDiv').addClass('myFirstClass');
或
您还可以使用.css()
方法更新元素的css,如:
$('.myFirstClass').css('width','100px');
有。您可以使用jQuery.addClass()
和.removeClass()方法添加或删除类
$('#myDiv').addClass('myFirstClass');
或
您还可以使用.css()
方法更新元素的css,如:
$('.myFirstClass').css('width','100px');
有趣的问题是,最好测试使用一种方法是否比使用另一种方法有任何性能优势
$("<style>.thinger{width:" + maxWidth + ";}</style>").appendTo("head");
$(“.thinger{width:+maxWidth+”;}”).appendTo(“head”);
如果需要随时间更新该值,则不应继续向页面添加新的样式标记。相反,您希望使用以下内容更新现有的:
$(“按钮”)。单击(函数(e){
//获取动态宽度设置
var maxWidth=$(e.target).text(),
newRule='.thinger{width:'+maxWidth+';}';
styleTag=$(“#thinger style”);
if(styleTag.length){
//更新现有
text(newRule);
}否则{
//第一次创造
$(''+newRule+'')。附录(“标题”);
}
});
有趣的问题,最好测试使用一种方法比使用另一种方法是否有任何性能优势
$("<style>.thinger{width:" + maxWidth + ";}</style>").appendTo("head");
$(“.thinger{width:+maxWidth+”;}”).appendTo(“head”);
如果需要随时间更新该值,则不应继续向页面添加新的样式标记。相反,您希望使用以下内容更新现有的:
$(“按钮”)。单击(函数(e){
//获取动态宽度设置
var maxWidth=$(e.target).text(),
newRule='.thinger{width:'+maxWidth+';}';
styleTag=$(“#thinger style”);
if(styleTag.length){
//更新现有
text(newRule);
}否则{
//第一次创造
$(''+newRule+'')。附录(“标题”);
}
});
是否不可能简单地用CSS编写类,然后使用jQuery的.addClass(“thinger”)
?您可以创建具有特定属性的类,并使用jQuery切换它们,这是一种干净的方式,不会弄乱html。如果您想使用jQuery对元素应用样式,我非常确定。您需要按照以下方式编写:.css({'width':someWidth})
是否不可能简单地用CSS编写类,然后使用jQuery的.addClass(“thinger”)
?您可以创建具有特定属性的类,并使用jQuery切换它们,这是一种干净的方式,不会弄乱html。如果您想使用jQuery对元素应用样式,我非常确定。您需要按照以下方式编写:.css({'width':someWidth})代码>我无法在样式表中设置类规则,因为我不知道运行前的宽度。我正在尝试让我所有的div都成为最大div的宽度。谢谢更新。您可以继续扩展:您可以像创建DOM中的任何其他元素一样创建样式元素并将其附加到头部,但是这是浪费时间。
。为什么这是浪费时间?因为与单一方法的css()
调用相比,它(相对而言)需要大量代码。我无法在样式表中设置类规则,因为我不知道运行前的宽度。我正在尝试让我所有的div都成为最大div的宽度。谢谢更新。您可以继续扩展:您可以像创建DOM中的任何其他元素一样创建样式元素并将其附加到头部,但是这是浪费时间。
。为什么这是浪费时间?因为与单一方法的css()
调用相比,它(相对而言)需要大量的代码。你知道OP在问题中的代码已经在这样做了,对吧?谢谢,这就是我要找的。你知道JQuery是否内置了一个包装器,这样我就不需要处理insertRule
vsaddRule
?@sixtyfootersdude对于JQuery我没有任何输入,很抱歉,你知道OP的代码,这个问题已经在做了,对吧?谢谢,这就是我要找的。您知道JQuery是否内置了一个包装器,这样我就不需要处理insertRule
vsaddRule
?@sixtyfootersdude for JQuery I d