2011-12-04 16 views
14

Używam wtyczki Briana Cherne'a hoverIntent.js dla projektu. To świetna wtyczka, ale wygląda na to, że została uszkodzona w jQuery 1.7.1.joverter hoverIntent: "Uncaught TypeError: Can not call method" apply "of undefined '

Próbuję debugować, ale nie jestem najbardziej as javascripter tam. Może ktoś mi powiedzieć co może muszę szukać w swoim kodzie, aby rozwiązać następujący komunikat o błędzie:

Uncaught TypeError: Cannot call method 'apply' of undefined

To właśnie moja konsola Chrome mi mówi. Po prostu nie jestem pewien, co zmienić.

znajduje się następujący wiersz kodu w plugin, który zawiera apply w ciągu

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

EDIT

należy zamieścić link do pełnego kodu komentarzem Briana. To tutaj: http://cherne.net/brian/resources/jquery.hoverIntent.js

EDIT 2

Mój scenariusz jest następujący

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

dziękuję za wszystkie komunikaty o błędach. ale w zasadzie potrzebujemy twojego kodu skryptu – noob

+0

@micha - zredagowaliśmy to pytanie, aby je uwzględnić. – Brian

+0

To nie to samo. hoverIntent zapobiega występowaniu tego efektu (http://dreamstarstudios.com/screencasts/2011-12-04_0509.swf). Bez 'hoverIntent' listy rozwijane (ponieważ jest ich wiele) szybko ustawiają się w kolejce po najechaniu kursorem myszy. Jeśli byłby JEDEN dropdown, wtedy twoja sugestia byłaby dobra, ale z wieloma, 'hoverIntent' jest lepszy. – Brian

Odpowiedz

29

Zasadniczo hoverIntent wymaga dwóch funkcji lub jeden obiekt.

Jeśli włączysz tylko jedną funkcję, spróbujesz użyć swojej funkcji jako obiektu i nie możesz zastosować funkcji! Więc użyj:

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

Nie ma to jak skromność ... :) – Andreas

0

Miałem ten sam problem z wtyczką "paralaksy". Zmieniłem wersję librery jQuery na *jquery-1.6.4* z *jquery-1.10.2*. I błąd został usunięty.

1

Jeśli używasz jednego obiektu zamiast dwóch funkcji, ale bez właściwości "out", wystąpiłby taki sam błąd. Zrobiłem. Dodanie "out" naprawia to w taki sam sposób, jak już odpowiedziano @noob, tylko z inną składnią, więc może pomóc komuś.

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