ventana solo quitar modal example esc dialogo deshabilitar con cerrar boton bootstrap jquery html css jquery-ui jquery-ui-dialog

solo - ¿Cómo eliminar el botón de cerrar en el diálogo de jQuery UI?



quitar boton cerrar modal bootstrap (22)

¿Cómo elimino el botón de cierre (la X en la esquina superior derecha) en un cuadro de diálogo creado por jQuery UI?


Aquí hay otra opción simplemente usando CSS que no anula todos los diálogos de la página.

El CSS

.no-close .ui-dialog-titlebar-close {display: none }

El HTML

<div class="selector" title="No close button"> This is a test without a close button </div>

El Javascript.

$( ".selector" ).dialog({ dialogClass: ''no-close'' });

Ejemplo de trabajo


Como descubrí que estaba haciendo esto en varios lugares de mi aplicación, lo envolví en un complemento:

(function ($) { $.fn.dialogNoClose = function () { return this.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();


Como se muestra en la api.jqueryui.com/dialog oficial y sugerido por David:

Crea un estilo:

.no-close .ui-dialog-titlebar-close { display: none; }

Luego, simplemente puede agregar la clase de no cerrar a cualquier diálogo para ocultar su botón de cerrar:

$( "#dialog" ).dialog({ dialogClass: "no-close", buttons: [{ text: "OK", click: function() { $( this ).dialog( "close" ); } }] });


Creo que esto es mejor.

open: function(event, ui) { $(this).closest(''.ui-dialog'').find(''.ui-dialog-titlebar-close'').hide(); }


El botón de cierre agregado por el widget de diálogo tiene la clase ''ui-dialog-titlebar-close'', así que después de su llamada inicial a .dialog (), puede usar una declaración como esta para eliminar el botón de cerrar nuevamente: Funciona ..

$( ''a.ui-dialog-titlebar-close'' ).remove();


Encontré que esto funcionaba al final (note que la tercera línea anula la función de abrir que encuentra el botón y lo oculta):

$("#div2").dialog({ closeOnEscape: false, open: function(event, ui) { $(".ui-dialog-titlebar-close", ui.dialog | ui).hide(); } });

Para ocultar el botón de cierre en todos los cuadros de diálogo, puede usar el siguiente CSS también:

.ui-dialog-titlebar-close { visibility: hidden; }


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(); },


La mejor manera de ocultar el botón es filtrarlo con su atributo de icono de datos:

$(''#dialog-id [data-icon="delete"]'').hide();


La respuesta de Robert MacLean no funcionó para mí.

Sin embargo, esto funciona para mí:

$("#div").dialog({ open: function() { $(".ui-dialog-titlebar-close").hide(); } });


Manera fácil de lograr: (Haz esto en tu Javascript )

$("selector").dialog({ autoOpen: false, open: function(event, ui) { // It''ll hide Close button $(".ui-dialog-titlebar-close", ui.dialog | ui).hide(); }, closeOnEscape: false, // Do not close dialog on press Esc button show: { effect: "clip", duration: 500 }, hide: { effect: "blind", duration: 200 }, .... });


Ninguna de las obras anteriores. 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 })

Por favor, compruebe si funciona para usted.


Para la desactivación de la clase, el código corto:

$(".ui-dialog-titlebar-close").hide();

puede ser usado.


Puede eliminar el botón de cerrar con el código de abajo. También hay otras opciones con las que podrías 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();


Puedes usar CSS para ocultar el botón de cerrar en lugar de JavaScript:

.ui-dialog-titlebar-close{ display: none; }


Soy un fanático de los de una sola línea (¡donde trabajan!). Esto es lo que funciona para mí:

$("#dialog").siblings(".ui-dialog-titlebar").find(".ui-dialog-titlebar-close").hide();


También puede eliminar su línea de encabezado:

<div data-role="header">...</div>

que elimina el botón de cierre.


Una vez que haya llamado a .dialog() en 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, this refiere al elemento que se está "dialogando" y $(this).parent() refiere al contenedor de marcas de diálogo, por lo que:

$("#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 } });

Para su información, el marcado de diálogo se ve así:

<div class="ui-dialog ui-widget ui-widget-content ui-corner-all ui-draggable ui-resizable"> <!-- ^--- this is the dialog widget --> <div class="ui-dialog-titlebar ui-widget-header ui-corner-all ui-helper-clearfix"> <span class="ui-dialog-title" id="ui-dialog-title-dialog">Dialog title</span> <a class="ui-dialog-titlebar-close ui-corner-all" href="#"><span class="ui-icon ui-icon-closethick">close</span></a> </div> <div id="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>

Demostraciones aquí


http://jsfiddle.net/marcosfromero/aWyNn/

$(''#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


$("#div2").dialog({ closeOnEscape: false, open: function(event, ui) { $(''#div2'').parent().find(''a.ui-dialog-titlebar-close'').hide();} });


$(".ui-button-icon-only").hide();


document.querySelector(''.ui-dialog-titlebar-close'').style.display = ''none''


open: function(event, ui) { //hide close button. $(this).parent().children().children(''.ui-dialog-titlebar-close'').click(function(){ $("#dhx_combo_list").remove(); }); },

yaaaay ¡Está funcionando realmente! Capto el evento de cierre del cuadro de diálogo. En el código anterior, elimina la div (#dhx_combo_list).

Genial, gracias a todos!