como - jquery ui themes
Diálogo de la interfaz de usuario jquery: ¿cómo inicializar sin una barra de título? (21)
¿Es posible abrir un diálogo de jQuery UI sin una barra de título?
Así es como se puede hacer.
Vaya a la carpeta de temas -> base -> abra jquery.ui.dialog.css
Encontrar
Seguimientos
si no desea mostrar la barra de título, simplemente configure la pantalla: ninguna como hice en lo siguiente.
.ui dialog.ui-dialog .ui-dialog-titlebar
{
padding: .4em 1em;
position: relative;
display:none;
}
Samilarly por título también.
.ui-dialog .ui-dialog-title {
float: left;
margin: .1em 0;
white-space: nowrap;
width: 90%;
overflow: hidden;
text-overflow: ellipsis;
display:none;
}
Ahora viene el botón de cerrar, también puede configurarlo como ninguno o puede configurar su
.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;
}
Hice mucha búsqueda pero nada, entonces tuve esta idea en mi mente. Sin embargo, esto afectará a toda la aplicación para que no tenga el botón de cerrar, barra de título para el diálogo, pero también puede superar esto utilizando jquery y agregando y configurando css a través de jquery
Aquí hay una sintaxis para esto.
$(".specificclass").css({display:normal})
Creo que la forma más limpia de hacerlo sería crear un nuevo widget myDialog, que consiste en el widget de diálogo menos el código de barras del título. Extracción del código de barras del título parece sencillo.
https://github.com/jquery/jquery-ui/blob/master/ui/jquery.ui.dialog.js
Creo que puedes ocultarlo con CSS:
.ui-dialog-titlebar {
display: none;
}
Alternativamente, puede aplicar esto a diálogos específicos con la opción dialogClass
:
$( "#createUserDialog" ).dialog({
dialogClass: "no-titlebar"
});
.no-titlebar .ui-dialog-titlebar {
display: none;
}
Echa un vistazo a " Theming " el diálogo. La sugerencia anterior hace uso de la opción dialogClass
, que parece estar a punto de adoptar un nuevo método.
En realidad, hay otra forma de hacerlo, usando el widget
diálogo directamente:
Puede obtener el widget de diálogo así
$("#example").dialog(dialogOpts);
$dlgWidget = $(''#example'').dialog(''widget'');
y luego hacer
$dlgWidget.find(".ui-dialog-titlebar").hide();
para ocultar la titlebar
dentro de ese diálogo
y en una sola línea de código (me gusta el encadenamiento):
$(''#example'').dialog(''widget'').find(".ui-dialog-titlebar").hide();
No es necesario agregar una clase extra al cuadro de diálogo de esta manera, simplemente vaya directamente. Funciona bien para mí.
Esta es la forma más fácil de hacerlo y solo eliminará la barra de título en ese diálogo específico;
$(''.dialog_selector'').find(''.ui-dialog-titlebar'').hide();
Esta siguiente forma me solucionó el problema.
$(''#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>
Esto funcionó para mí:
$("#dialog").dialog({
create: function (event, ui) {
$(".ui-widget-header").hide();
},
Esto me sirvió para ocultar la barra de título del cuadro de diálogo:
$(".ui-dialog-titlebar" ).css("display", "none" );
Intenta usar
$("#mydialog").closest(".ui-dialog-titlebar").hide();
Esto ocultará todos los títulos de diálogos.
$(".ui-dialog-titlebar").hide();
Lo único que descubrí al ocultar la barra de título de Diálogo es que, incluso si la pantalla no tiene pantalla, los lectores de pantalla lo siguen y lo leen. Si ya agregó su propia barra de título, leerá ambas, causando confusión.
Lo que hice fue eliminarlo del DOM usando $(selector).remove()
. Ahora los lectores de pantalla (y todos los demás) no lo verán porque ya no existe.
Me di cuenta de una solución para eliminar dinámicamente la barra de título.
$("#example").dialog(dialogOpts);
// remove the title bar
$(".ui-dialog-titlebar").hide();
Esto eliminará todos los elementos con la clase ''ui-dialog-titlebar'' una vez que se haya renderizado el cuadro de diálogo.
Me gusta anular los widgets de 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);
Así que ahora puede configurar si desea mostrar la barra de título o no
$(''#mydialog'').dialog({
headerVisible: false // or true
});
Me parece más eficiente y más legible usar el evento abierto y ocultar la barra de título desde allí. No me gusta usar búsquedas de nombre de clase de página global.
open: function() { $(this).closest(".ui-dialog").find(".ui-dialog-titlebar:first").hide(); }
Sencillo.
Para mí, todavía quería usar las esquinas redimensionables, simplemente no quería, así que vea las líneas diagonales. solía
$(".ui-resizable-handle").css("opacity","0");
Acabo de darme cuenta de que estaba comentando la pregunta incorrecta. A la altura de mi tocayo :(
Prueba esto
$("#ui-dialog-title-divid").parent().hide();
reemplazar divid
por id
correspondiente
Puede eliminar la barra con el icono de cerrar con las técnicas descritas anteriormente y luego agregar un icono de cierre usted mismo.
CSS:
.CloseButton {
background: url(''../icons/close-button.png'');
width:15px;
height:15px;
border: 0px solid white;
top:0;
right:0;
position:absolute;
cursor: pointer;
z-index:999;
}
HTML:
var closeDiv = document.createElement("div");
closeDiv.className = "CloseButton";
// añade este div al div que contiene tu contenido
JS:
$(closeDiv).click(function () {
$("yourDialogContent").dialog(''close'');
});
Puede usar jquery para ocultar la barra de título después de usar dialogClass al inicializar el diálogo.
durante el inicio:
$(''.selector'').dialog({
dialogClass: ''yourclassname''
});
$(''.yourclassname div.ui-dialog-titlebar'').hide();
Al usar este método, no necesita cambiar su archivo css, y esto también es dinámico.
Si tienes varios diálogos, puedes usar esto:
$("#the_dialog").dialog({
open: function(event, ui) {
//hide titlebar.
$(this).parent().children(''.ui-dialog-titlebar'').hide();
}
});
Uso esto en mis proyectos.
$("#myDialog").dialog(dialogOpts);
// remove the title bar
$("#myDialog").siblings(''div.ui-dialog-titlebar'').remove();
// one liner
$("#myDialog").dialog(dialogOpts).siblings(''.ui-dialog-titlebar'').remove();
vaya a su jquery-ui.js (en mi caso jquery-ui-1.10.3.custom.js) y busque esto._createTitlebar (); y comentarlo.
ahora cualquiera de tus diálogos aparecerá con encabezados. Si desea personalizar el encabezado, simplemente vaya a _createTitlebar (); y edite el código en el interior.
por
Creo que la mejor solución es usar la opción dialogClass
.
Un extracto de jquery UI docs:
durante init: $(''.selector'').dialog({ dialogClass: ''noTitleStuff'' });
o si quieres despues de init. :
$(''.selector'').dialog(''option'', ''dialogClass'', ''noTitleStuff'');
Así que creé un diálogo con la opción dialogClass = ''noTitleStuff'' y el css así:
.noTitleStuff .ui-dialog-titlebar {display:none}
demasiado simple !! pero tomé 1 día para pensar por qué mi método de perforación de id-> class anterior no estaba funcionando. De hecho, cuando llama .dialog()
método .dialog()
, el div que transforma se convierte en hijo de otro div (el diálogo real div) y posiblemente en un ''hermano'' del div de la titlebar
de titlebar
, por lo que es muy difícil tratar de encontrar el último desde el primero.