2011-11-19 11 views
12

Estoy usando un jsetup de jQuery UI (basado en algunos botones de opción). Todo funciona bastante bien, excepto que al hacer clic en uno de los botones no pasa nada (como si nunca hubieras hecho clic en eso). Pensé que tal vez era tal vez un problema con mi aplicación, así que fui al sitio de demostración:jQuery UI - los botones del teclado no siempre funcionan al hacer clic por primera vez

http://jqueryui.com/demos/button/#radio

y pasó algún tiempo al hacer clic en torno a mover de un tirón entre las distintas opciones. ¡Yo tuve el mismo problema! ¡Aleatoriamente el clic sería ignorado!

me encontré con este sitio:

http://www.filamentgroup.com/lab/styling_buttons_and_toolbars_with_the_jquery_ui_css_framework/

Qué laminado su propia versión y yo era incapaz de replicar el mismo problema. Lo que me lleva a creer que hay alguna peculiaridad menor con la implementación de jQuery UI?

¿Alguien ha visto esto? Pasé algún tiempo tratando de encontrar a otros teniendo el mismo problema y no he encontrado ninguna mención de ello. ¿Alguien más ve el mismo problema?

Respuesta

8

Esto también me sucede a mí.

Creo que el problema es que tiene que mantener el mouse quieto cuando hace clic en el botón, o no funcionará.

Por ejemplo, intente hacer clic en el botón mientras mueve el mouse a un ritmo lento y constante. El botón no funcionará a menos que el mouse apenas se mueva. También intente arrastrar el botón incluso un solo píxel y luego soltarlo.

El sitio con el que se encontró que funciona parece usar mousedown para evitar este problema. También están usando una versión anterior de jQuery UI, que podría ser un factor.

+1

mismo digo, es terrible! ¿Hay un error jquery en esto? – ack

+0

ya parece: http://bugs.jqueryui.com/ticket/5454 –

+1

@NadirMuzaffar Creo que esta es una mejor solicitud de error para capturar los detalles: http://bugs.jqueryui.com/ticket/7665 – Brombomb

7
$("#radio").buttonset(); 
$("#radio").find("label").unbind("mouseup"); 

porque en el código fuente jQuery se encuentra:

.bind("mouseup" + this.eventNamespace, function(event) { 
    if (options.disabled) {return; } 
    if (startXPos !== event.pageX || startYPos !== event.pageY) { 
        clickDragged = true; 
    } 
} 
+0

Intenté esta solución alternativa: funciona: cuando muevo el mouse mientras hago clic, el estado del botón aún está activado. ¡Gracias! – Kel

+0

Esto funcionó bien para Chrome e IE, pero al leer un enlace publicado arriba, noté un comentario en [link] (http://bugs.jqueryui.com/ticket/7665) que tiene que ver con el comportamiento de Firefox en especial. En las pruebas, descubrí que el trabajo de desvinculación parece tener efectos extraños y adversos en Firefox. – Nato

+0

Desafortunadamente, en Firefox todo esto fue crear la ilusión de que funcionó (cambios de gráficos de entrada, pero no desencadena el evento de cambio) – pete

Cuestiones relacionadas