2011-12-04 11 views
14

Estoy usando el plugin de Brian Cherne hoverIntent.js para un proyecto. Es un gran complemento, pero parece estar roto en jQuery 1.7.1.jQuery hoverIntent: 'Uncaught TypeError: no se puede llamar al método' apply 'de undefined'

Estoy intentando depurarlo, pero no soy el más sofisticado javascripter que hay. ¿Puede alguien decirme lo que podría tener que buscar en su código para solucionar el mensaje de error siguiente:

Uncaught TypeError: Cannot call method 'apply' of undefined

Eso es lo que mi consola de Chrome me dice. No estoy seguro de qué cambiar.

Existe la siguiente línea de código en el plugin que contiene apply en la cadena

return cfg.over.apply(ob,[ev])}else{pX=cX;pY=cY;ob.hoverIntent_t=setTimeout(function(){compare(ev,ob)},cfg.interval)}};

EDITAR

que debería enviar el enlace de código comentado completo de Brian. Es aquí: http://cherne.net/brian/resources/jquery.hoverIntent.js

EDITAR 2

Mi script es el siguiente

//#nav-main dropdown effects     
$('#nav-main ul li').hoverIntent(function() { 
    $(this).find('.dropdown').stop(true,true).slideToggle('500'); 
}); 
+0

gracias por todos los mensajes de error. pero básicamente necesitamos su script código – noob

+0

@micha - editó la pregunta para incluirlo – Brian

+0

No es lo mismo. hoverIntent evita que ocurra este efecto (http://dreamstarstudios.com/screencasts/2011-12-04_0509.swf). Sin 'hoverIntent', los menús desplegables (ya que hay muchos de ellos) hacen cola rápidamente mientras pasas el mouse sobre ellos. Si hubiera UN menú desplegable, entonces su sugerencia sería buena, pero para muchos, 'hoverIntent' es mejor. – Brian

Respuesta

29

Básicamente hoverIntent requiere dos funciones o un objeto.

Si solo tiene una función, intentará usar su función como objeto y no podrá aplicar una función. Así que use:

$('#nav-main ul li').hoverIntent(function() { 
    $(this).find('.dropdown').stop(true,true).slideToggle('500'); 
}, function(){}); 
+4

No hay nada como la modestia ... :) – Andreas

0

Tuve el mismo problema con el complemento 'parallax'. Cambié la versión de jQuery a *jquery-1.6.4* desde *jquery-1.10.2*. Y se borra el error.

1

Si está utilizando un objeto en lugar de dos funciones, pero sin la propiedad "fuera", tendría el mismo error. Yo si. Agregar "salir" lo corrige de la misma manera que @noob ya respondido, solo con una sintaxis diferente, por lo que podría ayudar a alguien.

$('#nav-main ul li').hoverIntent({ 
    over: function() { 
    $(this).find('.dropdown').stop(true,true).slideToggle('500'); 
    }, 
    out: function() {} 
}); 
Cuestiones relacionadas