jQuery插件正在应用内联样式(display:block)。我感觉自己很懒,想用display:none覆盖它。
最好的(懒惰)方式是什么?
发布于 2011-07-02 06:19:56
更新:虽然以下解决方案有效,但有一个更简单的方法。见下文。
这是我想出来的,我希望它能派上用场--对你或其他任何人:
$('#element').attr('style', function(i, style)
{
return style && style.replace(/display[^;]+;?/g, '');
});这将删除该内联样式。
我不确定这是你想要的。您想要覆盖它,正如前面所指出的,$('#element').css('display', 'inline')很容易做到这一点。
我正在寻找的是一种完全删除内联样式的解决方案。我需要在我正在编写的插件中使用它,在这个插件中,我必须临时设置一些内联CSS值,但希望稍后删除它们;我希望样式表能够收回控制权。我可以通过存储它的所有原始值,然后将它们放回内联来做到这一点,但这个解决方案对我来说要干净得多。
下面是插件格式:
(function($)
{
$.fn.removeStyle = function(style)
{
var search = new RegExp(style + '[^;]+;?', 'g');
return this.each(function()
{
$(this).attr('style', function(i, style)
{
return style && style.replace(search, '');
});
});
};
}(jQuery));如果在脚本之前的页面中包含此插件,则只需调用
$('#element').removeStyle('display');这应该能起到作用。
更新:我现在意识到所有这些都是徒劳的。您可以简单地将其设置为空:
$('#element').css('display', '');它将自动为您删除。
下面是the docs的一句话
如果样式属性已经被直接应用,无论是在
样式属性中,通过
$('#mydiv').css('color', '')的.css()方法,还是通过对样式属性的直接DOM操作,jQuery将样式属性的值设置为空字符串-例如$('#mydiv').css('color', '')-将该属性从元素中删除。但是,它不会删除在样式表或<style>元素中使用CSS规则应用的样式。
我不认为jQuery会在这里施展任何魔法;it seems the style object does this natively。
发布于 2010-03-18 03:18:02
.removeAttr("style")去掉了整个样式标签...
.attr("style")来测试值并查看是否存在内联样式...
.attr("style",newValue)将其设置为其他值
发布于 2013-01-16 23:42:58
删除内联样式(由jQuery生成)的最简单方法是:
$(this).attr("style", "");内联代码应该消失,并且您的对象应该适应CSS文件中预定义的样式。
对我很管用!
https://stackoverflow.com/questions/2465158
复制相似问题