यहाँ एक समाधान है कि नहीं करता है एक extr के उपयोग की आवश्यकता नहीं है एक जेएस लाइब्रेरी या प्लगइन, जिसका उद्देश्य सादगी के लिए है। यह अन्य कार्यान्वयन के रूप में उतना ही कुशल नहीं हो सकता है, लेकिन जब भी आप स्क्रॉल करते हैं तो यह आपके मुख्य कार्यक्रम को फायर करने से निश्चित रूप से एक कदम है।
यह डैनी वान कुटेन द्वारा इस blog post से लिया गया था। जिसे मैंने अपने ब्लॉग पर अपने बैक-टू-टॉप बटन के लिए onscroll()
ईवेंट में देरी करने में उपयोग किया है।
var timer;
$(window).scroll(function() {
if(timer) {
window.clearTimeout(timer);
}
timer = window.setTimeout(function() {
// actual code here. Your call back function.
console.log("Firing!");
}, 100);
});
तुम भी आगे कॉलबैक फ़ंक्शन से बाहर चर बाहर ले जाकर प्रदर्शन में सुधार कर सकते हैं अनावश्यक recalculations जो बदलेगा नहीं $(window).height()
या कुछ स्थिर div तत्व की ऊंचाई के मान से बचने के लिए, उदाहरण के लिए एक बार पेज लोड होने ।
यहां एक उदाहरण है जो मेरे उपयोग के मामले से अनुकूलित है।
var scrollHeight = $("#main-element").height(); //never changes, no need to recalculate.
$(window).on('scroll', function() {
if (timer)
window.clearTimeout(timer);
timer = window.setTimeout(function() {
var scrollPosition = $(window).height() + $(window).scrollTop();
if ($(window).scrollTop() < 500)
$(".toggle").fadeIn(800);
else
$(".toggle").fadeOut(800);
}, 150); //only fire every 150 ms.
});
यह केवल हर 150ms पर अमल, वरना टाइमर 0 वापस करने के लिए रीसेट करता है, तो 150ms पास नहीं किया है करने के लिए वास्तविक समारोह सीमित करता है। आपको जो चाहिए उसे पूरा करने के लिए मूल्य को ट्विक करें।
बहुत भयानक पुस्तकालय, लेकिन मैं किसी भी निर्भरता से बचने के लिए कोशिश कर रहा हूँ। –
अंडरस्कोर को स्रोत कोड देखें (जिसे बेहद प्रलेखित किया गया है) और केवल थ्रॉटल खींचें। – tkone