我在Chrome浏览器中删除样式时遇到了麻烦。它可能有一堆不同的样式可能应用于它所以我需要删除它whoesale。这是一个问题的例子,
jsfiddle *需要Chrome
removeAttr('style')
似乎没有删除样式标记。当您打开调试栏并突出显示跨度时,它会开始正常工作。
有谁知道为什么样式没有删除以及如何删除它?
答案 0 :(得分:5)
而不是试图删除它,重置它呢?
$("#someElement").attr("style","");
答案 1 :(得分:3)
我决定尝试一件事。将JQuery版本更改为1.5.2,它在chrome中运行良好。所以,它似乎是最新版本的JQuery中的一个错误。我建议您只使用1.5.2,如果您可以使用它或建议Chrome用户更改浏览器。你也可以这样做:
} else {
$('#s').attr('style');
$('#s').removeAttr('style');
}
而不是:
} else {
$('#s').removeAttr('style');
}
进行一些小错误修复/黑客攻击。
答案 2 :(得分:2)
.style
可能因为与CSS的关系而被锁定。
只需用
清除它就可以获得相同的效果$('#s').attr('style','');
答案 3 :(得分:2)
我不确定为什么该属性没有被删除,.removeAttr() - 函数是否适用于“style”?
无论如何,我总是以不同的方式处理这个问题。使用你的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属性的值设置为''
答案 4 :(得分:0)
使用css,您要为此范围设置css值而不是属性
所以您需要做的就是将脚本更改为
var t = true;
setInterval(function(){
t = !t;
if(t){
$('#s').attr('style', "color: rgb(255, 0, 0)");
} else {
$('#s').removeAttr('style');
}
}, 1000);
答案 5 :(得分:0)
我仍在努力,但这是一个快速解决方法:
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 = true;
setInterval(function(){
t = !t;
if(t){
$('#s').css({color: 'rgb(255, 0, 0)'});
} else {
$('#s').attr('style');
$('#s').removeAttr('style');
}
}, 1000);
答案 6 :(得分:0)
你没事,有点儿。问题是带有element.removeAttribute('style')的Webkit,它不能始终如一地工作。 jQuery现在做了什么(1.6.4)可能在这里修复了:http://bugs.jquery.com/ticket/9699首先将style属性设置为nothing.setAttribute('style',''),然后删除它似乎解决了这个问题。