jQuery插件正在应用内联样式(display:block
)。我很懒,想用display:none
覆盖它。
最好的(懒惰)方式是什么?
最佳答案
更新:尽管以下解决方案有效,但是有一种更简单的方法。见下文。
这是我想出的,我希望这对您或其他任何人都派上用场:
$('#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的报价:
我不认为jQuery在这里发挥了任何作用。 it seems the
style
object does this natively。