jquery - 为什么 jquery 的 onbeforeprint 事件有问题?

标签 jquery

我有以下功能。

$(function() {
    $(".sectionHeader:gt(0)").click(function() {
        $(this).next(".fieldset").slideToggle("fast");
    });
    $("img[alt='minimize']").click(function(e) {
        $(this).closest("table").next(".fieldset").slideUp("fast");
        e.stopPropagation();
        return false;
    });
    $("img[alt='maximize']").click(function(e) {
        $(this).closest("table").next(".fieldset").slideDown("fast");
        e.stopPropagation();
        return false;
    });
});

<script type="text/javascript">
     window.onbeforeprint = expandAll;

     function expandAll(){
       $(".fieldset:gt(0)").slideDown("fast");
      }
</script>

对于这个html

    <table class="sectionHeader" ><tr ><td>Heading 1</td></tr></table>
     <div style="display:none;" class="fieldset">Content 1</div>

 <table class="sectionHeader" ><tr ><td>Heading 2</td></tr></table>
     <div style="display:none;" class="fieldset">Content 2</div>

我在页面上有几个 div class="fieldset",但是当我进行打印预览或打印时,我可以在打开打印预览或打印之前看到所有 div 向下滑动,但在实际的打印预览或打印输出中,它们是全部崩溃。

如果有人能提供解决方案,我将不胜感激。

有人知道这是为什么或者如何解决它吗?

谢谢。

PS:使用 a 也不起作用(我假设是因为 jquery 使用切换)并且它不是我正在寻找的问题。

最佳答案

更简单的方法是在 CSS 中,您可以使用不同的打印样式和屏幕样式,如下所示:

@media print {
  .fieldset { display: block; }
}

@media screen {
  .fieldset { display: none; }
}

.fieldset 类将在打印时显示,但默认情况下不会在浏览器中显示。请务必删除页面中 .fieldset div 上的内联 diplay: none 样式,因为它们会覆盖 CSS 文件中的其中一个样式。

关于jquery - 为什么 jquery 的 onbeforeprint 事件有问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2476794/

相关文章:

jquery 在 ajax $.get 调用中选择并更新头节点

javascript - 如何从 C# 生成的 html 输入中获取多个值

javascript - 着色/操作文本区域的部分

javascript - 移动导航隐藏/显示一键

jquery - POST 到服务器,接收 PDF,使用 jQuery 交付给用户

javascript - Bootstrap 选项卡中的事件类动态

javascript - jcarousel - 如何将图像链接到 url?

javascript - 是否可以将 ScrollTo 添加到我的 Accordion 常见问题解答页面?

javascript - 变量没有传递到函数中?

javascript - jQuery - 追加变量时,它只会添加到 1 个选择