无法在chrome中移除样式属性

Unable to remove style attribute in chrome

本文关键字:样式 属性 chrome      更新时间:2023-09-26

我在Chrome中删除跨度的样式时遇到了麻烦。它可能有很多不同的样式所以我需要把它全部移除。下面是这个问题的一个例子,

jsfiddle *需要chrome

removeAttr('style')似乎没有移除样式标签。当你打开调试栏并突出显示span时,它开始完美地工作。

有谁知道为什么样式没有被删除以及如何删除它吗?

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

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

我决定尝试一件事。将JQuery版本更改为1.5.2,它可以在chrome中正常工作。因此,这似乎是最新版本的JQuery中的一个错误。我建议你只使用1.5.2,如果你可以摆脱它或建议Chrome用户更换浏览器。你也可以这样做:

 } else {
   $('#s').attr('style');
   $('#s').removeAttr('style');    
 }

而不是:

 } else {
   $('#s').removeAttr('style');    
  }

为一个小的bug修复/hack。

http://jsfiddle.net/pjabT/7/

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

你可以用

清除它来获得同样的效果
$('#s').attr('style','');

我不知道为什么属性不被删除,是。removeattr() -函数适用于"风格"?

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

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属性的值设置为"

"

使用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);

我仍然在工作,但这里有一个快速修复:

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);

UPDATE:有趣的是,这段代码是有效的:

var = true;

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

你还好吧。问题是带有element.removeAttribute('style')的Webkit不一致地工作。jQuery现在(1.6.4)所做的可能在这里修复了:http://bugs.jquery.com/ticket/9699首先将style属性设置为none with element。setAttribute('style', ")然后删除它,这似乎解决了这个问题。