2011-12-04 28 views
14

Tôi đang sử dụng plugin của Brian Cherne hoverIntent.js cho dự án. Đó là một plugin tuyệt vời nhưng dường như nó bị hỏng trong jQuery 1.7.1.jQuery hoverIntent: 'Uncaught TypeError: Không thể gọi phương thức' áp dụng 'không xác định'

Tôi đang cố gắng gỡ lỗi nhưng tôi không phải là trình biên dịch ace nhất trên mạng. bất cứ ai có thể cho tôi biết những gì tôi có thể cần phải tìm kiếm trong mã của mình để sửa chữa các thông báo lỗi sau đây:

Uncaught TypeError: Cannot call method 'apply' of undefined

Đó là những gì console Chrome của tôi nói với tôi. Tôi không biết phải thay đổi gì.

Có một dòng mã sau đây trong các plugin chứa apply trong chuỗi

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

EDIT

tôi nên đăng các liên kết đến mã nhận xét đầy đủ của Brian. Đó là ở đây: http://cherne.net/brian/resources/jquery.hoverIntent.js

EDIT 2

kịch bản của tôi là như sau

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

cảm ơn tất cả các thông báo lỗi. nhưng về cơ bản chúng tôi cần mã script của bạn – noob

+0

@micha - đã chỉnh sửa câu hỏi để bao gồm nó – Brian

+0

Nó không giống nhau. hoverIntent ngăn chặn hiệu ứng này xảy ra (http://dreamstarstudios.com/screencasts/2011-12-04_0509.swf). Nếu không có 'hoverIntent' thả xuống (vì có nhiều người trong số họ) nhanh chóng xếp hàng khi bạn di chuột qua. Nếu có ONE thả xuống thì đề xuất của bạn sẽ tốt, nhưng với nhiều, 'hoverIntent' là tốt hơn. – Brian

Trả lời

29

Về cơ bản hoverIntent đòi hỏi hai chức năng hoặc một đối tượng.

Nếu bạn đặt vào chỉ một hàm, nó sẽ cố gắng sử dụng hàm của bạn làm đối tượng và bạn không thể áp dụng hàm! Vì vậy, sử dụng:

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

Chẳng gì bằng khiêm tốn ... :) – Andreas

0

Tôi đã gặp vấn đề tương tự với plugin 'thị sai'. Tôi đã thay đổi phiên bản jQuery librery thành *jquery-1.6.4* từ *jquery-1.10.2*. Và lỗi bị xóa.

1

Nếu bạn đang sử dụng một đối tượng thay vì hai hàm, nhưng không có thuộc tính "hết", bạn sẽ có cùng lỗi. Tôi đã làm. Thêm "out" sửa lỗi theo cách tương tự như @noob đã được trả lời, chỉ với cú pháp khác nhau, vì vậy nó có thể giúp ai đó.

$('#nav-main ul li').hoverIntent({ 
    over: function() { 
    $(this).find('.dropdown').stop(true,true).slideToggle('500'); 
    }, 
    out: function() {} 
}); 
Các vấn đề liên quan