Est-il possible d'ouvrir une boîte de dialogue jQuery UI sans barre de titre?
J'ai trouvé un correctif pour supprimer dynamiquement la barre de titre.
$("#example").dialog(dialogOpts);
// remove the title bar
$(".ui-dialog-titlebar").hide();
Cela supprimera tous les éléments de la classe 'ui-dialog-titlebar' après le rendu de la boîte de dialogue.
Je pense que la meilleure solution consiste à utiliser l'option dialogClass
.
Un extrait de la documentation de jquery UI:
pendant init: $('.selector').dialog({ dialogClass: 'noTitleStuff' });
ou si vous voulez après init. :
$('.selector').dialog('option', 'dialogClass', 'noTitleStuff');
J'ai donc créé un dialogue avec l'option dialogClass = 'noTitleStuff' et le css comme ça:
.noTitleStuff .ui-dialog-titlebar {display:none}
trop simple !! mais j’ai pris un jour pour réfléchir à la raison pour laquelle ma méthode de forage précédente id-> class ne fonctionnait pas. En fait, lorsque vous appelez la méthode .dialog()
, la div que vous transformez devient l'enfant d'une autre div (la vraie div de dialogue) et éventuellement d'un «frère» de la titlebar
div. Il est donc très difficile d'essayer de trouver cette dernière à partir d'ancien.
Je crois que vous pouvez le cacher avec CSS:
.ui-dialog-titlebar {
display: none;
}
Vous pouvez également l’appliquer à des dialogues spécifiques avec l’option dialogClass
:
$( "#createUserDialog" ).dialog({
dialogClass: "no-titlebar"
});
.no-titlebar .ui-dialog-titlebar {
display: none;
}
Consultez " Theming " dans la boîte de dialogue. La suggestion ci-dessus utilise l’option dialogClass
, qui semble être sur c’est la solution en faveur d’une nouvelle méthode.
Je l'utilise dans mes projets
$("#myDialog").dialog(dialogOpts);
// remove the title bar
$("#myDialog").siblings('div.ui-dialog-titlebar').remove();
// one liner
$("#myDialog").dialog(dialogOpts).siblings('.ui-dialog-titlebar').remove();
Cela a fonctionné pour moi:
$("#dialog").dialog({
create: function (event, ui) {
$(".ui-widget-header").hide();
},
Essayez d'utiliser
$("#mydialog").closest(".ui-dialog-titlebar").hide();
Ceci cachera tous les titres de dialogues
$(".ui-dialog-titlebar").hide();
En fait, il existe un autre moyen de le faire, en utilisant le dialogue widget
directement:
Vous pouvez obtenir le widget de dialogue ainsi
$("#example").dialog(dialogOpts);
$dlgWidget = $('#example').dialog('widget');
et ensuite faire
$dlgWidget.find(".ui-dialog-titlebar").hide();
pour masquer la titlebar
dans cette boîte de dialogue uniquement
et dans une seule ligne de code (j'aime bien chaîner):
$('#example').dialog('widget').find(".ui-dialog-titlebar").hide();
Pas besoin d'ajouter une classe supplémentaire au dialogue de cette façon, allez-y directement. Ça marche pour moi.
Je trouve plus efficace et lisible d’utiliser l’événement open et d’en masquer la barre de titre. Je n'aime pas utiliser les recherches par nom de classe global.
open: function() { $(this).closest(".ui-dialog").find(".ui-dialog-titlebar:first").hide(); }
Simple.
Vous pouvez utiliser jquery pour masquer la barre de titre après avoir utilisé dialogClass lors de l’initialisation de la boîte de dialogue.
pendant init:
$('.selector').dialog({
dialogClass: 'yourclassname'
});
$('.yourclassname div.ui-dialog-titlebar').hide();
En utilisant cette méthode, vous n’avez pas besoin de changer votre fichier css, c’est aussi dynamique.
J'aime remplacer les widgets jQuery.
(function ($) {
$.widget("sauti.dialog", $.ui.dialog, {
options: {
headerVisible: false
},
_create: function () {
// ready to generate button
this._super("_create"); // for 18 would be $.Widget.prototype._create.call(this);
// decide if header is visible
if(this.options.headerVisible == false)
this.uiDialogTitlebar.hide();
},
_setOption: function (key, value) {
this._super(key, value); // for 1.8 would be $.Widget.prototype._setOption.apply( this, arguments );
if (key === "headerVisible") {
if (key == false)
this.uiDialogTitlebar.hide();
else
this.uiDialogTitlebar.show();
return;
}
}
});
})(jQuery);
Donc, vous pouvez maintenant configurer si vous voulez afficher la barre de titre ou non
$('#mydialog').dialog({
headerVisible: false // or true
});
Si vous avez plusieurs dialogues, vous pouvez utiliser ceci:
$("#the_dialog").dialog({
open: function(event, ui) {
//hide titlebar.
$(this).parent().children('.ui-dialog-titlebar').hide();
}
});
C'est la façon la plus simple de le faire et cela ne supprimera la barre de titre que dans cette boîte de dialogue spécifique;
$('.dialog_selector').find('.ui-dialog-titlebar').hide();
La seule chose que j’ai découverte en cachant la barre de titre de Dialog est que, même si l’affichage est inexistant, les lecteurs d’écran le saisissent et le lisent. Si vous avez déjà ajouté votre propre barre de titre, les deux sont lus, ce qui crée de la confusion.
Ce que j'ai fait a été supprimé du DOM à l'aide de $(selector).remove()
. Maintenant, les lecteurs d'écran (et tous les autres) ne le verront pas car il n'existe plus.
Essaye ça
$("#ui-dialog-title-divid").parent().hide();
remplacez divid
par id
correspondant
Cela m'a permis de masquer la barre de titre de la boîte de dialogue:
$(".ui-dialog-titlebar" ).css("display", "none" );
Voici comment cela peut être fait.
Allez dans le dossier themes -> base -> ouvrez jquery.ui.dialog.css
Trouver
Suivants
si vous ne souhaitez pas afficher titleBar, définissez simplement display: none comme je l'ai fait dans la suite.
.ui dialog.ui-dialog .ui-dialog-titlebar
{
padding: .4em 1em;
position: relative;
display:none;
}
Samilarly pour le titre aussi.
.ui-dialog .ui-dialog-title {
float: left;
margin: .1em 0;
white-space: nowrap;
width: 90%;
overflow: hidden;
text-overflow: Ellipsis;
display:none;
}
Maintenant vient bouton de fermeture, vous pouvez également définir aucun ou vous pouvez définir sa
.ui-dialog .ui-dialog-titlebar-close {
position: absolute;
right: .3em;
top: 50%;
width: 21px;
margin: -10px 0 0 0;
padding: 1px;
height: 20px;
display:none;
}
J'ai fait beaucoup de recherches mais rien alors j'ai eu cette idée dans mon esprit . Cependant, cela affectera toute l'application de ne pas avoir le bouton fermer, la barre de titre pour la boîte de dialogue mise en css via jquery
voici la syntaxe pour cette
$(".specificclass").css({display:normal})
Je pense que le moyen le plus simple de le faire serait de créer un nouveau widget myDialog, composé du widget de dialogue moins le code à barres du titre. L'excursion du code à barres du titre semble simple.
https://github.com/jquery/jquery-ui/blob/master/ui/jquery.ui.dialog.js
Pour moi, je voulais toujours utiliser les coins redimensionnables, je ne voulais tout simplement pas voir les lignes en diagonale. j'ai utilisé
$(".ui-resizable-handle").css("opacity","0");
Je viens de me rendre compte que je commentais la mauvaise question. Vivre jusqu'à mon homonyme :(
Ce formulaire suivant m'a corrigé le problème.
$('#btnShow').click(function() {
$("#basicModal").dialog({
modal: true,
height: 300,
width: 400,
create: function() {
$(".ui-dialog").find(".ui-dialog-titlebar").css({
'background-image': 'none',
'background-color': 'white',
'border': 'none'
});
}
});
});
#basicModal {
display: none;
}
<script src="http://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.10.3/jquery-ui.min.js"></script>
<link rel="stylesheet" href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.10.3/themes/smoothness/jquery-ui.css" />
<div id="basicModal">
Here your HTML content
</div>
<button id="btnShow">Show me!</button>