在打印中去除内联样式

时间:2014-05-06 21:23:31

标签: jquery

我需要在打印时以不同方式格式化文档。基本的东西,媒体打印与屏幕,但这个特定的网页正在动态插入一些内联样式。如何在发送打印之前将其剥离?

我正在使用jQuery添加一个元素,该元素在屏幕上不可见但出现在print(#myElement)中。所以我试图捎带那个元素,但并没有真正成功。

if ($('#myElement').is(':visible')) {
    $('.myContent').attr('style', '');
}

我错过了什么?

感谢。

1 个答案:

答案 0 :(得分:0)

以下是一个如何使用普通的,普通的JS来实现这一点的示例:http://jsfiddle.net/AfdzW/。基本上,您只需要定位要删除其内嵌样式的DOM元素,并在其上调用removeAttribute()方法。

function clearInlineStyles(sel) {
  var els = document.querySelectorAll(sel);
  [].forEach.call(els, function(e) {
    e.removeAttribute('style'); 
  });
}

clearInlineStyles('div');

作为替代方案,如果您只希望定位某些内联样式,则可以使用$.fn.css() jQuery方法单独定位这些样式:

$.fn.removeSelectedStyles = function() {
  var styles = arguments;
  this.each(function() {
    var $that = $(this);
    [].forEach.call(styles, function(style) {
      $that.css(style, '');
    });
  });
}

$('div').removeSelectedStyles('background', 'height');

这是一个 fiddle ,展示了jQuery插件的工作原理