2011-10-10 23 views
6

Deseo aplicar estilo al estado activo del botón Cerrar (en la barra de título) en el cuadro de diálogo de jqueryUI. He diseñado su estado normal y: hover estado bien. Pero el: estado activo nunca parece desencadenar.No se puede diseñar el estado activo del botón para cerrar el diálogo de jqueryUI

¿Hay algo en el complemento que impida que: el estado activo en el enlace del botón de cierre funcione? ¿Se puede cambiar esto para que funcione?

He aquí un ejemplo del problema: View example

+0

puede darnos algunos ejemplos de lo que ha hecho que funciona y lo que no funciona, por favor? – xaxxon

+0

He añadido un simple violín –

+0

funciona para mí en Mac Chrome más reciente. Hago clic (y lo sostengo) en él y se pone negro como en el CSS que la página dice que debería. – xaxxon

Respuesta

2

Es consecuencia de la desactivación de la selección de TitleBar of Dialog Widget en el navegador que no admite el evento 'select astart'. Para esos navegadores ellos deshabilitan el evento 'mousedown' en su lugar.

línea 145: jquery.ui.dialog.js

 uiDialogTitlebar.find("*").add(uiDialogTitlebar).disableSelection(); 

la línea 120: jquery.ui.core.js

disableSelection: function() { 
    return this.bind(($.support.selectstart ? "selectstart" : "mousedown") + 
     ".ui-disableSelection", function(event) { 
      event.preventDefault(); 
     }); 
}, 

enableSelection: function() { 
    return this.unbind(".ui-disableSelection"); 
} 

esta manera puede utilizar EnableSelection() o desvincularla mismo

1

El estado :active se activa sólo cuando se hace clic. En ese punto, su diálogo se cerrará inmediatamente, así que dudo que pueda ver su estado. ¿Puedes dar un ejemplo si esto no responde a tu pregunta?

+0

La función "cerrar" no se llama hasta que se suelta el botón del mouse. – bricker

+0

¿Está el: hover ubicado antes del: después? : after tiene que ser después: coloca el cursor en el css. – JNDPNT

+0

El problema no es el CSS. Es un evento que vincula el código de diálogo. Si desenlaza todos los eventos en la barra de título del diálogo, el estado activo funcionará. Simplemente no sé específicamente qué evento es el problema. –

1

Teniendo en cuenta los comentarios de @Bizniztime, ¿por qué no hacer esto en javascript?

$(".ui-dialog-titlebar-close").mousedown(function() { 
    $(this).css("background", "#000"); 
}).mouseover(function() { 
    $(this).css("background", "#0F0");  
}).mouseout(function() { 
    $(this).css("background", "#F00");  
}); 

También puede añadir/eliminar clases ...

Cuestiones relacionadas