Ich habe eine Seite mit zwei verschiedenen Drucktasten und zwei Arten von div-Tags:JQuery Ändern von CSS-Klasse für print.css Datei nicht Wirksam
<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>
Ich habe folgendes in meiner print.css Datei
.no-print { display: none; }
und unten ist mein PrintPartial() Funktion
function PrintPartial() {
var notPartial = $(".not-partial");
notPartial.addClass("no-print");
window.print();
notPartial.removeClass("no-print");
}
Die "Print Full" Taste funktioniert gut und Drucke accordin g zu meiner print.css-Datei. Das Div, das mit der "no-print" -Klasse fest codiert ist, wird nicht gedruckt.
Die Schaltfläche "Teil drucken" ist jedoch identisch mit der Schaltfläche "Drucken voll".
Wenn ich meinen Debugger starte und in meine PrintPartial() - Funktion eintrete, kann ich die Elemente untersuchen und die "no-print" -Klasse wird zu den richtigen Elementen hinzugefügt. Es ruft window.print() auf, wodurch der Druckdialog geöffnet wird und die Klasse "no-print" aus den Elementen entfernt wird, die in der Variable notPartial gespeichert sind.
Mein einziger Gedanke ist die JQuery Select und addClass läuft asynchron und seine aufrufende drucken, bevor die Klasse geändert hat? Wenn ja, wie stelle ich sicher, dass window.print erst aufgerufen wird, nachdem die addClass abgeschlossen ist.
Ich habe versucht, es ohne die removeClass Schritt und habe die gleichen Ergebnisse, so dass ich weiß, es ist nicht mein Problem, oder zumindest ist es nicht mein einziges Problem.
Kann mir bitte jemand sagen, was ich falsch mache und wie ich es korrigieren kann?
Danke, Scott
UPDATE: Der obige Code funktioniert wie Pabs123 darauf hingewiesen. Ich hatte ein Problem, bei dem ein anderes CSS-Stück (nicht in diesem Beitrag enthalten) die Anzeigeeigenschaft zurückverändert.
Dank
sieht gut aus http://codepen.io/pabs123/pen/YNWEyO einzige Sache, die ich denken kann, ist, dass es andere css gibt, die auf diesem Element handeln, oder es gibt einige andere externe css, die hier nicht gezeigt werden – Pabs123
Ja, Sie sind richtig Ich habe gerade festgestellt, dass ich noch ein Stück CSS auf meiner Seite habe, das den Bildschirm überlagert: keine. Danke für Ihre Hilfe. – Newey