jquery - 删除/替换动态创建的 <STYLE> 标签(使用 jQuery)

标签 jquery css dynamic

我正在使用一种常用技术来创建 <STYLE>来 self 的 JavaScript/jQuery - 很像这样

$('<style>.tilewidth { width:' + tilesize + 'px; height: ' + tilesize + 'px;}</style>').appendTo('head');

我这样做是为了控制某些对象的缩放方式(例如强制 DIV s 为正方形)- 它工作正常。

问题是,如果重新调整窗口大小,我会重新运行代码 - 此时它会插入一组新的 <STYLE>现有标签之后的标签(如果有人拖动拉伸(stretch)/缩小窗口,它可能会插入 100s!!)

我应该强调,这是有效的,因为 CSS 只读取最后的条目 - 但它看起来笨拙、令人讨厌、凌乱、不整洁和可怕(这使得在 Firebug 中阅读代码几乎不可能!!)

问题是 - 我可以在插入新标签之前删除旧标签 - 还是我应该强制重新加载整个页面以重新调整大小(如果是这样,如何 - 这不会消耗性能吗)?

更新:根据 Robin 的回答,我创建了一个类似这样的函数

function addStyle(sname,scode) {
  scode = "." + sname + " {" + scode + "}";
  if ($("#style-" + sname).length)
    $("#style-" + sname).html(scode);
  else
    $("<style/>").attr("id","style-"+sname).html(scode).appendTo("head");
}

效果很好 - 谢谢! :)

最佳答案

给你的 style 标签一个 id 然后删除它?例如

$('#sizing').remove();
$('<style id="sizing">…</style>').appendTo('head');

实际上,再想一想,您最好只设置文本而不是一遍又一遍地创建一个元素。

var sizing = $('#sizing');
if (sizing.length) {
  sizing.text('my new styles');
} else {
  $('<style id="sizing">…</style>').appendTo('head');
}

关于jquery - 删除/替换动态创建的 <STYLE> 标签(使用 jQuery),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11921814/

相关文章:

javascript - 在 javascript 中访问简单数组值

jquery - Jquery 动画圆形 Div 的问题

javascript - 选择时突出显示元素

html - 导航菜单 - 边框半径和下拉菜单问题

javascript - 如何更改图表字体颜色

MySQL:如何在不运行多个查询的情况下从由预设前缀和父表字段值组成的子表名中选择行

c# - 动态控制无法正常工作

javascript - 如何覆盖 javascript 表单小部件的属性

javascript - AJAX 调用中的强制 Document.write

css - 如何使用 base_url() CodeIgniter 方法在我的 View 中获取正确的 CSS 文件地址