Ist es möglich, einen jQuery UI-Dialog ohne Titelleiste zu öffnen?
254
Ich denke, dass die beste Lösung darin besteht, die Option zu verwenden dialogClass
.
Ein Auszug aus jquery UI-Dokumenten:
während init: $('.selector').dialog({ dialogClass: 'noTitleStuff' });
oder wenn du nach init willst. ::
$('.selector').dialog('option', 'dialogClass', 'noTitleStuff');
Also habe ich einen Dialog mit der Option dialogClass = 'noTitleStuff' und dem CSS wie folgt erstellt:
.noTitleStuff .ui-dialog-titlebar {display:none}
zu einfach !! Aber ich brauchte einen Tag, um zu überlegen, warum meine vorherige Bohrmethode der ID-> Klasse nicht funktionierte. Wenn Sie die .dialog()
Methode aufrufen, wird das von Ihnen transformierte Div zu einem Kind eines anderen Div (dem echten Dialog-Div) und möglicherweise zu einem „Bruder“ des titlebar
Div. Daher ist es sehr schwierig, das letztere ausgehend vom ersteren zu finden.
Ich habe einen Fix gefunden, um die Titelleiste dynamisch zu entfernen.
Dadurch werden alle Elemente mit der Klasse 'ui-dialog-titlebar' entfernt, nachdem das Dialogfeld gerendert wurde.
quelle
#example .ui-dialog-titlebar...
. Es wird so oder so funktionieren; Aber das Javascript wird das CSS irgendwann einstellen, daher sehe ich keinen Vorteil darin, es zunächst nicht in CSS zu tun. Es macht wirklich keinen großen Unterschied - was auch immer Sie am bequemsten sind :)Ich glaube, Sie können es mit CSS verstecken:
Alternativ können Sie dies mit der
dialogClass
Option auf bestimmte Dialoge anwenden :Schauen Sie sich den Dialog " Theming " an. Der obige Vorschlag nutzt die
dialogClass
Option, die auf dem Weg zu einer neuen Methode zu sein scheint .quelle
Ich benutze dies in meinen Projekten
quelle
$(document).ready(function() { $('#video').click(function(){ $( "#dialog" ).dialog().siblings('.ui-dialog-titlebar').removeClass('ui-widget-header'); }); });
$("#myDialog").dialog('open').siblings('.ui-dialog-titlebar').remove();
ist meiner Meinung nach die beste Antwort +1 für diese Codezeile$("#myDialog").prev().hide()
oder$("#myDialog").prev(".ui-dialog-titlebar").hide()
.Das hat bei mir funktioniert:
quelle
Versuchen Sie es mit
Dadurch werden alle Dialogfeldtitel ausgeblendet
quelle
Tatsächlich gibt es noch eine andere Möglichkeit, dies
widget
direkt über den Dialog zu tun :Sie können das Dialog-Widget also erhalten
und dann tun
titlebar
nur innerhalb dieses Dialogfelds auszublendenund in einer einzigen Codezeile (ich mag Verkettung):
Auf diese Weise müssen Sie dem Dialogfeld keine zusätzliche Klasse hinzufügen. Gehen Sie einfach direkt darauf ein. Funktioniert gut für mich.
quelle
Ich finde es effizienter und lesbarer, das offene Ereignis zu verwenden und die Titelleiste von dort auszublenden. Ich mag es nicht, seitenglobale Klassennamen zu suchen.
Einfach.
quelle
Sie können jquery verwenden, um die Titelleiste auszublenden, nachdem Sie dialogClass beim Initialisieren des Dialogfelds verwendet haben.
während init:
Mit dieser Methode müssen Sie Ihre CSS-Datei nicht ändern, und dies ist auch dynamisch.
quelle
Ich mag es, jQuery-Widgets zu überschreiben.
So können Sie jetzt einrichten, ob Sie die Titelleiste anzeigen möchten oder nicht
quelle
Wenn Sie mehrere Dialoge haben, können Sie Folgendes verwenden:
quelle
Dies ist der einfachste Weg, und es wird nur die Titelleiste in diesem einen bestimmten Dialogfeld entfernt.
quelle
Das einzige, was ich beim Ausblenden der Dialog-Titelleiste entdeckt habe, ist, dass Bildschirmleser sie auch dann aufheben und lesen, wenn sie nicht angezeigt werden. Wenn Sie bereits eine eigene Titelleiste hinzugefügt haben, werden beide gelesen, was zu Verwirrung führt.
Ich habe es mit aus dem DOM entfernt
$(selector).remove()
. Jetzt sehen Bildschirmleser (und alle anderen) es nicht mehr, weil es nicht mehr existiert.quelle
Versuche dies
divid
durch entsprechende ersetzenid
quelle
Dieses nächste Formular hat mir das Problem behoben.
quelle
Ich denke, der sauberste Weg wäre, ein neues myDialog-Widget zu erstellen, das aus dem Dialog-Widget abzüglich des Titel-Barcodes besteht. Das Herausschneiden des Titel-Barcodes sieht unkompliziert aus.
https://github.com/jquery/jquery-ui/blob/master/ui/jquery.ui.dialog.js
quelle
Dies hat bei mir funktioniert, um die Titelleiste des Dialogfelds auszublenden:
quelle
So kann es gemacht werden.
Gehen Sie zum Themenordner -> Basis -> öffnen Sie jquery.ui.dialog.css
Finden
Folgen
Wenn Sie titleBar nicht anzeigen möchten, stellen Sie einfach display ein: none wie im Folgenden.
Samilarly auch für den Titel.
Jetzt kommt die Schaltfläche zum Schließen. Sie können auch keine oder die Einstellungen festlegen
Ich habe viel gesucht, aber nichts, dann kam mir diese Idee in den Sinn. Dies hat jedoch zur Folge, dass die gesamte Anwendung keine Schaltfläche zum Schließen und keine Titelleiste für den Dialog hat. Sie können dies jedoch auch überwinden, indem Sie jquery verwenden und CSS über jquery hinzufügen und einstellen
Hier ist die Syntax dafür
quelle
.dialogs()
und nur 1 oder so diese Einstellungen benötigen, gibt es alternative Routen, als die Einstellungen global auf diese Weise anzuwenden.Für mich wollte ich immer noch die anpassbaren Ecken verwenden, wollte nur nicht die diagonalen Linien sehen. ich benutzte
Ich habe gerade festgestellt, dass ich die falsche Frage kommentiert habe. Meinem Namensvetter gerecht werden :(
quelle
Haben Sie eine Lösung aus jQuery UI-Dokumenten ausprobiert? https://api.jqueryui.com/dialog/#method-open
Wie es heißt, können Sie so tun ...
In CSS:
In JS:
quelle
Sie können die Leiste mit dem Schließsymbol mit den oben beschriebenen Techniken entfernen und dann selbst ein Schließsymbol hinzufügen.
CSS:
HTML:
// füge dieses div an das div an, das deinen Inhalt enthält
JS:
quelle
Gehen Sie zu Ihrer jquery-ui.js (in meinem Fall jquery-ui-1.10.3.custom.js) und suchen Sie nach this._createTitlebar (); und kommentiere es.
Jetzt wird jeder Ihrer Dialoge mit Überschriften angezeigt. Wenn Sie den Header anpassen möchten, gehen Sie einfach zu _createTitlebar (); und bearbeiten Sie den Code im Inneren.
durch
quelle