Javascript 无法删除chrome中的样式属性

Javascript 无法删除chrome中的样式属性,javascript,jquery,html,css,google-chrome,Javascript,Jquery,Html,Css,Google Chrome,我很难从我的Chrome中删除这些样式。它可以有一堆不同的风格可能适用于它,所以我只需要删除它的所有。这是一个问题的例子 *需要chrome removeAttr('style')似乎没有删除样式标记。但是,当您打开调试栏并高亮显示范围时,它将开始正常工作 有人知道为什么不删除该样式以及如何删除它吗 与其尝试删除它,不如重新设置它 $("#someElement").attr("style",""); .style可能由于与CSS的关系而被锁定 您只需清除它,就可以获得相同的效果 $('#s'

我很难从我的Chrome中删除这些样式。它可以有一堆不同的风格可能适用于它,所以我只需要删除它的所有。这是一个问题的例子

*需要chrome

removeAttr('style')
似乎没有删除样式标记。但是,当您打开调试栏并高亮显示范围时,它将开始正常工作


有人知道为什么不删除该样式以及如何删除它吗

与其尝试删除它,不如重新设置它

$("#someElement").attr("style","");

.style
可能由于与CSS的关系而被锁定

您只需清除它,就可以获得相同的效果

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

使用css,您可以为这个span not属性设置css值

所以你需要做的就是把你的脚本改成

var t = true;

setInterval(function(){
    t = !t;
    if(t){
        $('#s').attr('style', "color: rgb(255, 0, 0)");
    } else {
        $('#s').removeAttr('style');    
    }
}, 1000);

我不确定为什么不删除该属性。removeAttr()函数是否适用于“style”

无论如何,我总是用不同的方式来处理这个问题。使用JSFIDLE的代码,它的工作原理如下

var t = true;

setInterval(function(){
    t = !t;
    if(t){
        $('#s').css({color: 'rgb(255, 0, 0)'});
    } else {
        $('#s').attr('style', '');    
    }
}, 1000);
我所改变的基本上是这一行

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

我刚刚将style属性的值设置为“”

我仍在处理它,但这里有一个快速修复方法:

var t = true;

setInterval(function(){
t = !t;
  if(t){
     $('#s').css('color','rgb(255, 0, 0)');
   } else {
    $('#s').css('color','rgb(0,0,0)');    
   }
}, 1000);
更新:值得注意的是,这段代码可以工作:

var t=真

setInterval(function(){
t = !t;
  if(t){
    $('#s').css({color: 'rgb(255, 0, 0)'});
  } else {
     $('#s').attr('style');
     $('#s').removeAttr('style');    
 }
}, 1000);

我决定尝试一件事。将JQuery版本更改为1.5.2,它在chrome中运行良好。因此,它似乎是JQuery最新版本中的一个bug。我建议你只要使用1.5.2,如果你可以摆脱它,或者建议Chrome用户改变浏览器。您也可以这样做:

 } else {
   $('#s').attr('style');
   $('#s').removeAttr('style');    
 }
与此相反:

 } else {
   $('#s').removeAttr('style');    
  }
为了一点bug修复/破解


你差不多没事。问题是具有element.removeAttribute('style')的Webkit无法持续工作。
jQuery现在所做的(1.6.4)可能在这里得到了修复:首先使用element.setAttribute('style','')将style属性设置为nothing,然后删除它,这似乎解决了这个问题。

可能的重复我不确定是否是removeAttr失败,它将删除已经存在的一个。如问题中所述,我不知道在运行时有什么样式,所以我无法重置特定样式。@Andrew我本想进一步更新它,但我决定放弃它,但GNi33解决方案似乎适合您想做的事情,因为它重置了样式,所以我决定不再进一步处理它。我没有想法……这很奇怪。在使用.css()时,“应该以任何方式工作”作为一个setter,jQuery修改元素的style属性。”-我知道它不起作用,但我将代码插入到fiddle中,它也不起作用。这可能是一个带有锁定样式的chrome怪癖,所以它不能被删除,正如EinacioThis和我下面的方法所提到的……但这可能是两者中更好的。它只是重置了内联样式属性,所以css文件中定义的样式实际上是重新锁定的?你有任何证据支持这一主张吗?我一直在寻找一个确切的证据,但没有用。可以使用局部视图,但可以肯定的是,不能直接在webkit中删除样式属性。我会看看源代码,如果我发现它这是唯一的原因,我可以看到它只在Chrome上工作。铬合金可能很古怪。在JS将一个变量定义为top之前,我对它有过一些问题,它不喜欢它。@Travis我接受这一点的问题是,当你使用调试栏查看DOM中的元素时,chrome突然决定可以删除该属性。那么,调试时发生了什么变化呢。如果它正在锁定attr,则在调试时也应保持一致,但事实并非如此:(首先从源代码上看,DominInspector是一组不同的代码,因此可能direct js中的代码有点沙盒,而DominInspector没有。但要证明这一点,需要阅读大量的代码。不是有一些webkit开发人员在场吗?很好,切换到edge(1.6.3pre)似乎也解决了这个问题。我要找一份关于它的错误报告。找到了。谢谢你一直这么做。他们的解决方案是
.attr('style','')
,然后删除它。@Andrew nice找到了错误号。我不知道它是否已经提交。如果它与以前的版本一起工作,它就是一个错误似乎是合乎逻辑的。