一个 jQuery 插件正在应用内联样式 ( display:block)。我感觉很懒,想用display:none.
display:block
display:none
最好的(懒惰的)方法是什么?
更新: 虽然以下解决方案有效,但还有一种更简单的方法。见下文。
这是我想出的,我希望这能派上用场 - 对你或其他任何人:
$('#element').attr('style', function(i, style) { return style && style.replace(/display[^;]+;?/g, ''); });
这将删除该内联样式。
我不确定这是你想要的。您想覆盖它,正如已经指出的那样,这很容易通过$('#element').css('display', 'inline').
$('#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', '');
它会自动为您删除。
这是来自文档的引用:
将样式属性的值设置为空字符串“例如$('#mydiv').css('color', '')”会从元素中删除该属性,如果它已经被直接应用,无论是在 HTML 样式属性中,通过 jQuery 的.css()方法,还是通过样式属性的直接 DOM 操作. 但是,它不会删除已在样式表或<style>元素中使用 CSS 规则应用的样式。
$('#mydiv').css('color', '')
.css()
<style>
我不认为 jQuery 在这里做了什么魔术。似乎该style对象本身就是这样做的。
style