【问题标题】:Is there a way to drop all CSS changes made by JavaScript/JQuery有没有办法删除 JavaScript/JQuery 所做的所有 CSS 更改
【发布时间】:2014-12-20 13:51:00
【问题描述】:

除了像下面的例子那样做 property = blank 之外,有没有办法在不刷新页面的情况下删除脚本所做的所有 css 更改?类似于重新加载原始样式表?

$("#div".css({property1:"", property2:""});

我目前正在学习 JavaScript 和 jQuery,我想在我的页面上实现某种“重置”按钮,在某些部分,颜色和大小可以由用户修改。

【问题讨论】:

  • 我猜你需要以某种方式跟踪你用 JavaScript 更改的 CSS 并使用它来重置所有内容。
  • 我认为您应该跟踪更改以供进一步使用。实际上你需要知道发生了什么变化。
  • 您必须以您喜欢的方式将所有更改存储在一个数组中,然后创建一个函数,对每个更改进行一次迭代、解析并撤消它。

标签: javascript jquery css


【解决方案1】:

好吧,如果您的所有原始样式都加载到样式表中,并且您的所有更改都是通过 jquery 完成的(它将更改直接应用于style 属性),那么一种简单的方法是:

$('#div').attr('style','');

如果您想通过这样的修改将其应用于所有事物,那么您可以使用属性选择器:

$('[style]').attr('style','');

【讨论】:

  • 嗨!只是想确保我理解它。 $('#div').attr('style','');是一个更具体的重置,它针对一个 div。而 $('[style]').attr('style','');直接定位样式表并删除所有样式?
  • 不,样式表永远不会被这个命令修改。它的作用是将元素的style 设置为空。两者的区别在于,第一个只针对 dom 的一个 id 元素(#div),而第二个($('[style]'))针对 dom 中所有具有 style 属性的元素。
  • @Marventus 我知道,他说他正在寻找的是一种使用 jquery.css() 删除通过 jquery 所做的所有更改的方法,而不是他试图修改电子表格。
  • 我知道,保罗,;-)。我正在回答迈克尔的评论。我的错:我应该在它前面加上 @Michael
【解决方案2】:

就像前面的答案中提到的,您可以简单地用空白覆盖样式属性。

但是,您也可以删除它:

$("Your selector").removeAttr("style");

【讨论】:

    【解决方案3】:

    如果您的元素不包含其他函数设置的任何其他内联样式,您可以在 CSS 样式表中设置默认样式,并移除“style”属性以移除其通过 JS 添加的内联属性:

    纯JS:

    var styled = document.querySelectorAll("*[style]");
    for(i=0; i<styled.length;i++) {
        styled[i].removeAttribute("style");
    }
    

    jQuery:

    $("*[style]").removeAttr("style");
    

    解释:

    这两种方法都会从文档中的所有元素中删除内联样式。

    演示:

    这是一个JSfiddle 作为演示。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-07-05
      • 1970-01-01
      • 2010-10-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-11-28
      • 1970-01-01
      相关资源
      最近更新 更多