JQuery修改print.css文件的CSS类没有生效

时间:2017-01-13 17:30:59

标签: javascript jquery html css print-css

我有一个包含两个不同打印按钮和两种div标签的页面:

<button onclick="window.print()">Print Full</button>
<button onclick="PrintPartial()">Print Partial</button>

<div class="not-partial">
    Div Content Here should print for "Print Full" but not for "Print Partial" 
</div>

<div class="no-print">
    This content shouldn't print on either
<div>

我的print.css文件中有以下内容

.no-print { display: none; }

以下是我的PrintPartial()函数

function PrintPartial() {
    var notPartial = $(".not-partial");
    notPartial.addClass("no-print");
    window.print();
    notPartial.removeClass("no-print");
}

&#34;打印完整&#34;按钮工作得很好,并根据我的print.css文件打印。使用&#34; no-print&#34;硬编码的div类正确无法打印。

然而&#34;打印部分&#34;按钮打印输出与打印完整按钮完全相同。

当我运行我的调试器并进入我的PrintPartial()函数时,我可以检查元素和&#34; no-print&#34; class正被添加到正确的元素中。它调用window.print()打开打印对话框并删除&#34; no-print&#34;存储在notPartial变量中的元素的类。

我唯一想到的是JQuery select和addClass异步运行,并且在类更改之前调用print?如果是这样,我怎么能确保在addClass完成之后才调用window.print。

我尝试在没有removeClass步骤的情况下运行它并得到相同的结果,所以我知道它不是我的问题,或者至少它不是我唯一的问题。

有人可以告诉我我做错了什么以及如何纠正它?

谢谢,     斯科特

更新:上面的代码工作得很好,正如Pabs123指出的那样。我有一个问题,其中一个不同的css(不包括在这篇文章中)导致显示属性被改回。

由于

1 个答案:

答案 0 :(得分:0)

抱歉,我在这里发布的代码按预期工作。正如Pabs123在他/她的评论中提到的那样,我还有其他冲突的CSS没有包含在帖子中,那就是将显示样式改为display:none。所以发布这不是一个很好的问题。遗憾。

感谢您的帮助。