He creado un botón de jQuery UI y me gustaría agregar un ícono secundario 'X' en el evento mouseenter y eliminar la 'X' en el evento mouseleave. Suena fácil.Al activar el ícono de botón de la IU de jQuery - roto en IE y Chrome
$("#hover").button({
icons: {
primary: "ui-icon-tag"
}
}).hover(function (event) {
// hover in
$(this).button("option", "icons", { primary: "ui-icon-tag", secondary: "ui-icon-close" });
}, function (event) {
// hover out
$(this).button("option", "icons", { primary: "ui-icon-tag" });
});
El evento de desplazamiento se dispara varias veces si mueve el cursor del mouse dentro del botón.
Funciona en Firefox, pero falló con IE y Chrome.
Es difícil explicar el efecto peculiar en palabras pero por favor ver el jsFiddle aquí:
Mi objetivo es lograr un efecto consistente en todos los navegadores. Gracias =)
EDITAR ***
Ahora tengo alguna pista de por qué el vuelo estacionario se rompe en el IE y Chrome. Al pasar el botón de interfaz de usuario de un par de veces e inspeccionar el elemento de botón en Firebug, resulta las etiquetas HTML están viciados por widget de jQuery UI ..
<button id="hover" class="ui-button ui-widget ui-state-default ui-corner-all ui-state-hover ui-button-text-icons" role="button">
<span class="ui-button-icon-primary ui-icon ui-icon-tag"/>
<span class="ui-button-text">Hover me!</span>
<span class="ui-button-icon-secondary ui-icon ui-icon-close"/>
</button>
<span class="ui-button-icon-primary ui-icon ui-icon-tag"/>
<span class="ui-button-text">Hover me!</span>
<span class="ui-button-icon-secondary ui-icon ui-icon-close"/>
</button>
Nota los tramos adicionales y la etiqueta de cierre botón ahora? ¿Este comportamiento es un error de jQuery UI?
Puede probar el ejemplo aquí:
Eso no va a funcionar. Intenté eso. De hecho, debajo del capó, el control deslizante usa mouseenter y mouseleave para el controlador de eventos también, lee allí en alguna parte. Tengo la sensación de que la condición de carrera está sucediendo aquí ..Sucede cuando pasas rápidamente sobre el botón y eso conduce al elemento defectuoso demostrado anteriormente ... – Kagawa
Estoy batallando jsfiddle, pero creo que mi respuesta actualizada funciona ... – Jason
Sigue igual, solo funciona en Firefox, falló tanto en Chrome como en IE ... El icono secundario ('X' - la cruz) no se elimina después de algunos movimientos rápidos .. Tal vez deberías volver a intentarlo =) – Kagawa