5

En primer lugar me disculpo ... He publicado esta pregunta antes, pero hice un mal trabajo al explicarla. Tengo problemas para conectar hoverIntent en el siguiente JavaScript ... Lo necesito para reemplazar las funciones mouseenter y mouseleave siguientes. Solo para ser claro, estoy pidiendo ayuda porque no soy muy bueno con la sintaxis de JavaScript. El segundo fragmento de código siguiente parece que debería funcionar, pero no hace nada y parece estar completamente muerto en Internet Explorer.Reemplazar MouseOver con .hoverIntent

if (jQuery.browser.msie === true) { 
    jQuery('#top_mailing') 
    .bind("mouseenter",function(){ 
     $("#top_mailing_hidden").stop().slideDown('slow'); 
    }) 
    .bind("mouseleave",function(){ 
     $("#top_mailing_hidden").stop().slideUp('slow'); 
    }); 
} 

estoy usando lo siguiente para otros navegadores, pero no está funcionando en Internet Explorer.

$('#top_mailing').hoverIntent(
    function() { 
    $("#top_mailing_hidden").stop().slideDown('slow'); 
    }, 
    function() { 
    $("#top_mailing_hidden").stop().slideUp('slow'); 
    } 
); 
+2

¿Estás recibiendo errores JS en IE? –

+1

Acabo de probar hoverIntent y jQuery 1.4.1 con IE. Funciona bien. ¿Anima en absoluto para ti? ¿Está funcionando en otros navegadores? – user113716

+0

¿Se han probado este código: $ ('# top_mailing') hoverIntent ( function() { $ ("# top_mailing_hidden") stop() slideDown ('lento'); ..}, function() {. $ ("# top_mailing_hidden"). Stop(). SlideUp ('lento'); } ); – Brian

Respuesta

3

Creo que he encontrado el problema.

Llamas al $('#top_mailing').hoverIntent(... dos veces. Una vez en la parte inferior del archivo hoverintent_r5.js y una vez en el archivo custom.js. Aparentemente IE no le gusta eso. Deshágase de uno u otro, y debería estar bien.

Probablemente es mejor mantener todo el código en su propio archivo js. De lo contrario, es fácil olvidarse.

EDITAR: Evitando el problema de detención().

prefiero animado:

$('#top_mailing').hoverIntent(
    function() { 
    $("#top_mailing_hidden").stop().animate({height:150},'slow'); 
    }, 
    function() { 
    $("#top_mailing_hidden").stop().animate({height:0},'slow'); 
    } 
); 

De esta manera, cuando se necesita para parar y cambiar de dirección, siempre va a saber a dónde ir. (0 y 150 en el ejemplo anterior).

Tenga en cuenta que esto requeriría que top_mailing_hidden tuviera clip:auto; overflow:hidden establecido.

Dado que está utilizando hoverIntent, es posible que no haya necesidad de detener las llamadas(), ya que hoverIntent está destinado a evitar esos eventos involuntarios de mouseover.

ligeramente fuera de tema:

mantener una cosa en mente con su aplicación. Dado que se trata de un formulario para completar, es probable que los usuarios (sin siquiera pensarlo) retiren el mouse cuando comienzan a escribir. Eso hará que la forma desaparezca.

Teniendo esto en cuenta, quizás desee reconsiderar la realización de un evento de mouseout. Siempre puede hacer que se deslice una copia de seguridad cuando el usuario envía el formulario, con un botón opcional "Cancelar" o "Cerrar".

+0

¡Impresionante! Dado que estás viendo el sitio real ... Prueba esto: si pasas el cursor sobre el menú desplegable y luego el mouseout. Ahora rápidamente ingrese y cierre el mouse mientras se completa la animación de slideUp. Debería verlo abortar donde queda atrapado en la mitad de la animación y luego deslizarse sobre él de nuevo, no se desplegará o solo caerá en parte. Eso es lo que estaba tratando de corregir con los comandos .stop() y .dequeue() pero sigue siendo un problema. ¿Alguna idea? – Brian

+0

Me alegra que esté funcionando. En cuanto al nuevo problema, me he dado cuenta de que al usar slideup/slidedown, u otras funciones como esa, puede perder la ruta de su destino correcto si está llamando a stop(). Yo personalmente no los usaría. En cambio, usaría el método animado() de jQuery. De esa manera estás codificando el destino. Editaré mi respuesta para mostrarte lo que quiero decir. – user113716

+0

¡LOL! La función .animate es aún más complicada que slideDown. Puedes verlo en el sitio. – Brian