0

特定の内容が含まれている<table>場所があり、特定のボタンがクリックされたときにそれが必要な場合、次の 2 つのことが発生します。<td><ul>

  1. <tr>を含む子の親<td><ul>非表示です
  2. 手順 1 の実行後にウィンドウが印刷されるため、印刷されたシートでは内容が非表示になります<tr><ul>

http://jsfiddle.net/emturano/S9YWL/

HTML:

<table id="todo-list">
    <tr>
        <td>Entry No UL 1</td>
    </tr>
    <tr>
        <td>Entry No UL 2</td>
    </tr>
    <tr>
        <td>
            <ul>I SHOULD BE HIDDEN WHEN PRINTED</ul>
        </td>
    </tr>
    <tr>
        <td>Entry No UL 4</td>
    </tr>
</table><p>

クリックして印刷

jQuery:

function () {
    $('#followup_a').click(followup);
});

function followup() {
    $('#todo-list tr:has(td:has(ul))').hide();
    window.print();
}
4

2 に答える 2

2

私が最初に目にする問題は、行function () {です。それは不適切な構文です。あなたがやろうとしていることは、私の回答で示すドキュメント対応の方法だと思います。

リンクから を削除し、onClick="window.print()"JS を次のように変更します。

$(function(){ // document . ready call
    $('#followup_a').on("click", function(e) {
        //  if href does not contain `javascript:void(0)` then use
        //  e.preventDefault(); // to prevent default link action
        $("#todo-list tr").filter(function(i) { return $(this).find("> td ul").length > 0 }).hide();
        window.print();
    });
})

これが何をするか:

  • .filter()$("#todo-list tr")は、通常はすべてのテーブル行を返し、どの情報が true を返すかに基づいて結果オブジェクトをフィルタリングする、の ような jQuery 要素のグループを呼び出すことができる便利な jquery メソッドです
    • $('#todo-list tr:has(td:has(ul))')ほぼ同じことをする必要がありますが
  • href="javascript:void(0)"は、デフォルトのリンク アクションを防止する 1 つの方法です。または、クリック イベント内でevent.preventDefault()を呼び出すことができます。

次のように書くこともできます。

function followup(e) {
    $("#todo-list tr").filter(function(i) { return $(this).find("> td ul").length > 0 }).hide();
    window.print();
}

$(function(){ // document . ready call
    $('#followup_a').on("click", followup);
})

デモ

于 2013-05-08T18:21:06.193 に答える
0

印刷メディア用に特定の CSS を定義するだけで、同じ結果が得られる場合があります。

@media print
  {
  td.noprint {display:none;}
  }

(ほんの一例です。特定のニーズに合わせて調整してください。)

于 2013-05-08T18:18:15.483 に答える