@MikeCole La documentación es para 1.10: creo que si desea ocultar el botón de cierre en cualquier versión anterior, deberá hacer algo como las respuestas a continuación.
Jarrett
1
Use "ui-dialog-titlebar-close": "display: none;" cuando configuramos el diálogo modal
jqueryui
Respuestas:
711
He encontrado que esto funcionó al final (tenga en cuenta que la tercera línea anula la función de abrir que encuentra el botón y lo oculta):
$(".ui-dialog-titlebar-close", ui).hide();para ocultar el botón solo para este diálogo.
Anthony Serdyukov
67
Tampoco pude hacerlo funcionar desde el parámetro ui. Terminé usando: $ (". Ui-dialog-titlebar-close", $ (this) .parent ()). Hide ();
Nigel
70
@Anton Solo quiero señalar que solo especificar 'ui' no funciona. tienes que usar 'ui.dialog'. entonces la línea correcta sería $ (". ui-dialog-titlebar-close", ui.dialog) .hide ();
Bradley Mountford
22
@Bradley. ui no funcionó para mí, ui.dialog lo hizo pero se aplicó en cada instancia. Para que el trabajo se aplicara solo a la función definida para abrir, tuve que hacer esto: $ (". Ui-dialog-titlebar-close", this.parentNode) .hide ();
Me gusta este enfoque porque puedo usarlo junto con cosas como: .noTitleDlg .ui-dialog-titlebar {display: none} en CSS para construir la forma en que quiero que mi diálogo aparezca y se comporte y luego simplemente configure dialogClass en consecuencia.
A. Murray
11
solución muy limpia ... +1 para no involucrar funcionalidad js adicional para eliminar el botón.
Bongs
2
Gran idea. Resulta útil para apuntar a un cuadro de diálogo específico en situaciones en las que utiliza el mismo método abierto para todos los cuadros de diálogo, y no es muy práctico cambiarlo para una instancia específica.
ZolaKt
3
Mi solución favorita Estaba pensando que algo así sería el mejor enfoque. Gracias por tenerlo ya codificado aquí. Sobre la base de esto, me gusta usar esta variación que tomará el atributo de clase de la división de contenido del diálogo, en el que puedo poner la clase "no cerrar":dialogClass : $("#my-dialog-id").attr("class"),
LS
Esta solución permite cerrar con escape, si desea evitar el cierre con el uso de escape:$( ".selector" ).dialog({ dialogClass: 'no-close' , closeOnEscape: false,});
Mladen Adamovic
124
la "mejor" respuesta no será buena para múltiples diálogos. Aquí hay una mejor solución.
open:function(event, ui){//hide close button.
$(this).parent().children().children('.ui-dialog-titlebar-close').hide();},
Esto es más complicado de lo que necesitas. $(".ui-dialog-titlebar-close", $(this).parent()).hide();
Kevin Panko
@KevinPanko su sugerencia funciona bien cuando utiliza el ejemplo proporcionado por el sitio de demostración de jquery ui con ASP.NET v2.0 en una página .aspx. jqueryui.com/demos/dialog/modal-form.html
Matthew Dally
66
.closest ('. ui-dialog') es mejor que asumir un padre.
Technomage
86
Puede usar CSS para ocultar el botón de cierre en lugar de JavaScript:
.ui-dialog-titlebar-close{
display: none;}
Si no desea afectar a todos los modales, puede usar una regla como
El problema es que ocasionalmente oculta el botón de cierre para otros diálogos también. cómo prevenir eso
Zaveed Abbasi
Incluso usando open: function (event, ui) {$ (this) .closest ('. Ui-dialog'). Find ('. Ui-dialog-titlebar-close'). Show (); } no funciona.
Zaveed Abbasi
34
Una vez que haya llamado .dialog()a un elemento, puede ubicar el botón de cierre (y otras marcas de diálogo) en cualquier momento conveniente sin usar controladores de eventos:
$("#div2").dialog({// call .dialog method to create the dialog markup
autoOpen:false});
$("#div2").dialog("widget")// get the dialog widget element.find(".ui-dialog-titlebar-close")// find the close button for this dialog.hide();// hide it
Metodo alternativo:
Dentro de los controladores de eventos de diálogo, se thisrefiere al elemento que se está "dialogando" y se $(this).parent()refiere al contenedor de marcado de diálogo, entonces:
$("#div3").dialog({
open:function(){// open event handler
$(this)// the element being dialogged.parent()// get the dialog widget element.find(".ui-dialog-titlebar-close")// find the close button for this dialog.hide();// hide it}});
FYI, el marcado de diálogo se ve así:
<divclass="ui-dialog ui-widget ui-widget-content ui-corner-all ui-draggable ui-resizable"><!-- ^--- this is the dialog widget --><divclass="ui-dialog-titlebar ui-widget-header ui-corner-all ui-helper-clearfix"><spanclass="ui-dialog-title"id="ui-dialog-title-dialog">Dialog title</span><aclass="ui-dialog-titlebar-close ui-corner-all"href="#"><spanclass="ui-icon ui-icon-closethick">close</span></a></div><divid="div2"style="height:200px;min-height:200px;width: auto;"class="ui-dialog-content ui-widget-content"><!-- ^--- this is the element upon which .dialog() was called --></div></div>
Ninguno de los anteriores funciona. La solución que realmente funciona es:
$(function(){//this is your dialog:
$('#mydiv').dialog({// Step 1. Add an extra class to our dialog to address the dialog directly. Make sure that this class is not used anywhere else:
dialogClass:'my-extra-class'})// Step 2. Hide the close 'X' button on the dialog that you marked with your extra class
$('.my-extra-class').find('.ui-dialog-titlebar-close').css('display','none');// Step 3. Enjoy your dialog without the 'X' link})
$('#yourdiv').// Get your box ...
dialog().// ... and turn it into dialog (autoOpen: false also works)
prev('.ui-dialog-titlebar').// Get title bar,...
find('a').// ... then get the X close button ...
hide();// ... and hide it
El botón de cierre agregado por el widget de diálogo tiene la clase 'ui-dialog-titlebar-close', por lo que después de su llamada inicial a .dialog (), puede usar una declaración como esta para eliminar nuevamente el botón de cerrar: funciona ...
Debería poder usar CSS directo aquí en lugar de JS si solo está ocultando el icono. All .hide()does está configurado display:noneen CSS, por lo que $(".ui-button-icon-only").hide();es funcionalmente equivalente a .ui-button-icon-only { display: none; }.
Como descubrí que estaba haciendo esto en varios lugares de mi aplicación, lo envolví en un complemento:
(function($){
$.fn.dialogNoClose =function(){returnthis.each(function(){// hide the close button and prevent ESC key from closing
$(this).closest(".ui-dialog").find(".ui-dialog-titlebar-close").hide();
$(this).dialog("option","closeOnEscape",false);});};})(jQuery)
Ejemplo de uso:
$("#dialog").dialog({/* lots of options */}).dialogNoClose();
Puede eliminar el botón de cierre con el código a continuación. También hay otras opciones con las que podría luchar útil.
$('#dialog-modal').dialog({//To hide the Close 'X' button"closeX":false,//To disable closing the pop up on escape"closeOnEscape":false,//To allow background scrolling"allowScrolling":true})//To remove the whole title bar.siblings('.ui-dialog-titlebar').remove();
Respuestas:
He encontrado que esto funcionó al final (tenga en cuenta que la tercera línea anula la función de abrir que encuentra el botón y lo oculta):
Para ocultar el botón de cierre en todos los cuadros de diálogo, también puede usar el siguiente CSS:
fuente
$(".ui-dialog-titlebar-close", ui).hide();
para ocultar el botón solo para este diálogo.open: function(event, ui) { $(".ui-dialog-titlebar-close").hide(); }
Aquí hay otra opción simplemente usando CSS que no anula todos los diálogos en la página.
El CSS
El HTML
El Javascript
Ejemplo de trabajo
fuente
dialogClass : $("#my-dialog-id").attr("class"),
$( ".selector" ).dialog({ dialogClass: 'no-close' , closeOnEscape: false,});
la "mejor" respuesta no será buena para múltiples diálogos. Aquí hay una mejor solución.
fuente
$(".ui-dialog-titlebar-close", $(this).parent()).hide();
Puede usar CSS para ocultar el botón de cierre en lugar de JavaScript:
Si no desea afectar a todos los modales, puede usar una regla como
Y aplicar
.hide-close-btn
al nodo superior del diálogofuente
Como se muestra en la página oficial y sugerido por David:
Crea un estilo:
Luego, simplemente puede agregar la clase de no cerrar a cualquier cuadro de diálogo para ocultar su botón de cerrar:
fuente
Creo que esto es mejor.
fuente
Una vez que haya llamado
.dialog()
a un elemento, puede ubicar el botón de cierre (y otras marcas de diálogo) en cualquier momento conveniente sin usar controladores de eventos:Metodo alternativo:
Dentro de los controladores de eventos de diálogo, se
this
refiere al elemento que se está "dialogando" y se$(this).parent()
refiere al contenedor de marcado de diálogo, entonces:FYI, el marcado de diálogo se ve así:
Demos aquí
fuente
La respuesta de Robert MacLean no funcionó para mí.
Sin embargo, esto funciona para mí:
fuente
fuente
Ninguno de los anteriores funciona. La solución que realmente funciona es:
Por favor, compruebe si funciona para usted.
fuente
La mejor manera de ocultar el botón es filtrarlo con su atributo de icono de datos:
fuente
http://jsfiddle.net/marcosfromero/aWyNn/
fuente
Para desactivar la clase, el código corto:
puede ser usado.
fuente
El botón de cierre agregado por el widget de diálogo tiene la clase 'ui-dialog-titlebar-close', por lo que después de su llamada inicial a .dialog (), puede usar una declaración como esta para eliminar nuevamente el botón de cerrar: funciona ...
fuente
Capté el evento cercano del cuadro de diálogo. Este código luego elimina el
<div>
(#dhx_combo_list
):fuente
fuente
.hide()
does está configuradodisplay:none
en CSS, por lo que$(".ui-button-icon-only").hide();
es funcionalmente equivalente a.ui-button-icon-only { display: none; }
.También puede eliminar su línea de encabezado:
<div data-role="header">...</div>
que elimina el botón de cerrar.
fuente
fuente
Manera fácil de lograr: (Haz esto en tu
Javascript
)fuente
Como descubrí que estaba haciendo esto en varios lugares de mi aplicación, lo envolví en un complemento:
Ejemplo de uso:
fuente
Soy fanático de las frases sencillas (¡donde trabajan!). Esto es lo que funciona para mí:
fuente
¿Qué tal usar esta línea CSS pura? Encuentro esta la solución más limpia para un diálogo con una ID dada:
fuente
Puede eliminar el botón de cierre con el código a continuación. También hay otras opciones con las que podría luchar útil.
fuente