Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/366.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用jQuery更新CSS属性_Javascript_Jquery_Css - Fatal编程技术网

Javascript 使用jQuery更新CSS属性

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

假设我有以下html:

...
<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
vs
addRule
?@sixtyfootersdude对于JQuery我没有任何输入,很抱歉,你知道OP的代码,这个问题已经在做了,对吧?谢谢,这就是我要找的。您知道JQuery是否内置了一个包装器,这样我就不需要处理
insertRule
vs
addRule
?@sixtyfootersdude for JQuery I d