2011-12-04 12 views
14

Sto usando il plugin hoverIntent.js di Brian Cherne per un progetto. È un ottimo plugin ma sembra essere rotto in jQuery 1.7.1.jQuery hoverIntent: 'Uncaught TypeError: Impossibile chiamare il metodo' apply 'of undefined'

Sto provando a eseguire il debug ma non sono il javascrip più asso là fuori. Qualcuno mi può dire cosa potrei avere bisogno di cercare nel suo codice per risolvere il seguente messaggio di errore:

Uncaught TypeError: Cannot call method 'apply' of undefined

Questo è ciò che la mia console Chrome mi dice. Non sono sicuro di cosa cambiare.

C'è la seguente riga di codice nel plugin che contiene apply nella stringa di

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

EDIT

devo inviare il link al codice commentato pieno di Brian. E 'qui: http://cherne.net/brian/resources/jquery.hoverIntent.js

EDIT 2

mio script è il seguente

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

grazie per tutti i messaggi di errore. ma fondamentalmente abbiamo bisogno del tuo codice di script – noob

+0

@micha - modificato la domanda per includerlo – Brian

+0

Non è la stessa cosa. hoverIntent impedisce che questo effetto si verifichi (http://dreamstarstudios.com/screencasts/2011-12-04_0509.swf). Senza 'hoverIntent' i menu a discesa (poiché ce ne sono molti) si accodano rapidamente mentre passi il mouse su di esso. Se ci fosse UN dropdown, il tuo suggerimento sarebbe buono, ma con molti, 'hoverIntent' è migliore. – Brian

risposta

29

Fondamentalmente hoverIntent richiede due funzioni o un oggetto.

Se si inserisce solo una funzione, cercherà di utilizzare la funzione come oggetto e non è possibile applicare una funzione! Quindi utilizzare:

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

Non c'è niente come la modestia ... :) – Andreas

0

Ho avuto lo stesso problema con il plug-in "parallasse". Ho modificato la versione di librerie jQuery in *jquery-1.6.4* da *jquery-1.10.2*. E l'errore è stato risolto.

1

Se si utilizza un oggetto anziché due funzioni, ma senza la proprietà "out" si avrebbe lo stesso errore. L'ho fatto. L'aggiunta di "out" la ripara allo stesso modo di @noob che ha già risposto, solo con una sintassi diversa, quindi potrebbe aiutare qualcuno.

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