दिलचस्प पोस्ट
एचटीएमएल पेज को लंगर के लिए कैसे स्क्रॉल करें? क्या 'अस्थिर' कीवर्ड में एक कंसोल फंक्शन द्वारा संशोधित होने की अनुमति देने के अलावा कोई अन्य उद्देश्य है? Unrooted डिवाइस में संपत्ति फ़ोल्डर से डेटाबेस कॉपी करें यूआरएल में रिक्त स्थान? कुछ वैक्टर के तत्वों के सभी संभव संयोजन उत्पन्न करें (कार्टेसीयन उत्पाद) कुंजी स्पार्क द्वारा एक से अधिक आउटपुट लिखें – एक स्पार्क जॉब पायथन के लिए SOAP क्लाइंट लाइब्रेरीज़ मौजूद हैं, और उनके लिए दस्तावेज कहां है? जावा सॉकेट्स पर फ़ाइल (बाइट ) भेजने और प्राप्त करना जावा में स्ट्रिंग को कैलेंडर वस्तु में कनवर्ट करें ऑफसेटविड्थ को समझना, क्लाइंट की चौड़ाई, स्क्रॉल-विथथ -हाइट, क्रमशः इंटरफ़ेस चर स्थिर और अंतिम रूप से क्यों हैं? लिंकर इनलाइन कार्य कर सकते हैं? जावा जीयूआई चौखटे क्या चुनना है? स्विंग, SWT, एडब्ल्यूटी, स्विंगएक्स, जेगूडिज़, जावा एफएक्स, अपाचे पिवट? रिटर्न वैल्यू एक नई लाइन पर है, क्यों एक जावास्क्रिप्ट रिटर्न स्टेटमेंट काम क्यों नहीं करता है? शब्दों को जावास्क्रिप्ट नंबर

jQuery के स्क्रोल () उपयोगकर्ता को स्क्रॉल करने से रोकते हुए पता लगा है

इस के साथ ठीक है ..

$(window).scroll(function() { $('.slides_layover').removeClass('showing_layover'); $('#slides_effect').show(); }); 

मैं बता सकता हूं कि जब कोई मुझे जो समझता है, स्क्रॉल कर रहा है। तो इसके साथ मैं यह समझाने की कोशिश कर रहा हूं कि जब कोई रोका गया है तो कैद कैसे किया जाए। उपरोक्त उदाहरण से आप देख सकते हैं कि स्क्रॉलिंग होने पर मैं तत्वों के एक समूह से एक वर्ग को निकाल रहा हूं। हालांकि, मैं उस क्लास को वापस करना चाहता हूं जब उपयोगकर्ता स्क्रॉल करना रोक देता है।

इसका कारण यह है कि मैं एक लेज़र शो दिखाने के इरादे का हूँ, जबकि पृष्ठ पृष्ठ को विशेष प्रभाव देने के लिए स्क्रॉल कर रहा है, मैं काम करने का प्रयास कर रहा हूं। लेकिन एक वर्ग मैं उस प्रभाव से टकराकर स्क्रॉल करते समय निकालने का प्रयास कर रहा हूं क्योंकि यह किसी प्रकृति के पारदर्शिता का प्रभाव है।

वेब के समाधान से एकत्रित समाधान "jQuery के स्क्रोल () उपयोगकर्ता को स्क्रॉल करने से रोकते हुए पता लगा है"

 $(window).scroll(function() { clearTimeout($.data(this, 'scrollTimer')); $.data(this, 'scrollTimer', setTimeout(function() { // do something console.log("Haven't scrolled in 250ms!"); }, 250)); }); 

अद्यतन करें

मैंने -इवेंट-हैंडलर on jQuery के डिफ़ॉल्ट को बढ़ाने के लिए एक एक्सटेंशन लिखा था यह चयनित तत्वों के लिए एक या एक से अधिक ईवेंट के लिए एक ईवेंट हैंडलर कार्य को जोड़ता है और यदि एक निश्चित अंतराल के लिए ईवेंट ट्रिगर नहीं किया गया है तो हेन्डलर कार्य को कॉल करता है। यह उपयोगी है यदि आप किसी कॉलबैक को केवल एक विलंब के बाद, फिर से आकार की घटना की तरह, या इस तरह से आग लगाना चाहते हैं।

अपडेट के लिए गिथूब-रेपो की जांच करना महत्वपूर्ण है!

https://github.com/yckart/jquery.unevent.js

 ;(function ($) { var on = $.fn.on, timer; $.fn.on = function () { var args = Array.apply(null, arguments); var last = args[args.length - 1]; if (isNaN(last) || (last === 1 && args.pop())) return on.apply(this, args); var delay = args.pop(); var fn = args.pop(); args.push(function () { var self = this, params = arguments; clearTimeout(timer); timer = setTimeout(function () { fn.apply(self, params); }, delay); }); return on.apply(this, args); }; }(this.jQuery || this.Zepto)); 

इसे किसी भी अन्य on या bind -ऐंड हैंडलर का उपयोग करें, सिवाय इसके कि आप एक अतिरिक्त पैरामीटर को अंतिम रूप दे सकते हैं:

 $(window).on('scroll', function(e) { console.log(e.type + '-event was 250ms not triggered'); }, 250); 

http://yckart.github.com/jquery.unevent.js/

(यह डेमो scroll बजाय resize scroll , लेकिन कौन परवाह करता है ?!)

JQuery थ्रॉटल / डिबेंस का उपयोग करना

jQuery बहस इस तरह की समस्याओं के लिए एक अच्छा है jsFidlle

 $(window).scroll($.debounce( 250, true, function(){ $('#scrollMsg').html('SCROLLING!'); })); $(window).scroll($.debounce( 250, function(){ $('#scrollMsg').html('DONE!'); })); 

दूसरा पैरामीटर "at_begin" ध्वज है यहां मैंने दिखाया है कि "स्क्रॉल स्टार्ट" और "स्क्रॉल फिनिश" दोनों पर कोड कैसे निष्पादित करें।

लोदाश का प्रयोग

जैसा कि बैरी पी, जेएसफ़िल्ड , अंडरस्कोर या रद्दी के द्वारा सुझाया गया है, उनमें कुछ भी अलग-अलग एपिस है।

 $(window).scroll(_.debounce(function(){ $('#scrollMsg').html('SCROLLING!'); }, 150, { 'leading': true, 'trailing': false })); $(window).scroll(_.debounce(function(){ $('#scrollMsg').html('STOPPED!'); }, 150)); 

रोब डब्लू। शुगक्टेड मैं यहां स्टैक पर एक और पोस्ट की जांच करता हूं जो मूल रूप से मेरे मूल एक के लिए समान पद था। जिसके माध्यम से पढ़ना है कि मैं एक साइट के लिए एक लिंक मिला:

http://james.padolsey.com/javascript/special-scroll-events-for-jquery/

यह वास्तव में मेरी समस्या को हल करने में मदद करने के लिए बहुत ही अच्छी तरह से मेरी अपनी आवश्यकताओं के लिए एक छोटे से tweaking के बाद समाप्त हो गया, लेकिन सभी पर मदद की बहुत रास्ते से बाहर घुमक्कड़ पाने के लिए और मुझे अपने खुद के बारे में 4 घंटे लगाना।

इस पोस्ट के रूप में देखकर कुछ योग्यता है, मुझे लगा कि मैं वापस आयेगा और मूल रूप से दिए गए लिंक पर पाया गया कोड प्रदान करेगा, सिर्फ इसलिए कि लेखक ने कभी साइट के साथ एक अलग दिशा में जाने का फैसला किया और लिंक को नीचे ले जाना समाप्त कर दिया।

 (function(){ var special = jQuery.event.special, uid1 = 'D' + (+new Date()), uid2 = 'D' + (+new Date() + 1); special.scrollstart = { setup: function() { var timer, handler = function(evt) { var _self = this, _args = arguments; if (timer) { clearTimeout(timer); } else { evt.type = 'scrollstart'; jQuery.event.handle.apply(_self, _args); } timer = setTimeout( function(){ timer = null; }, special.scrollstop.latency); }; jQuery(this).bind('scroll', handler).data(uid1, handler); }, teardown: function(){ jQuery(this).unbind( 'scroll', jQuery(this).data(uid1) ); } }; special.scrollstop = { latency: 300, setup: function() { var timer, handler = function(evt) { var _self = this, _args = arguments; if (timer) { clearTimeout(timer); } timer = setTimeout( function(){ timer = null; evt.type = 'scrollstop'; jQuery.event.handle.apply(_self, _args); }, special.scrollstop.latency); }; jQuery(this).bind('scroll', handler).data(uid2, handler); }, teardown: function() { jQuery(this).unbind( 'scroll', jQuery(this).data(uid2) ); } }; })(); 

आप एक अंतराल सेट कर सकते हैं जो प्रत्येक 500 एमएस या निम्न की तर्ज पर चलता है:

 var curOffset, oldOffset; oldOffset = $(window).scrollTop(); var $el = $('.slides_layover'); // cache jquery ref setInterval(function() { curOffset = $(window).scrollTop(); if(curOffset != oldOffset) { // they're scrolling, remove your class here if it exists if($el.hasClass('showing_layover')) $el.removeClass('showing_layover'); } else { // they've stopped, add the class if it doesn't exist if(!$el.hasClass('showing_layover')) $el.addClass('showing_layover'); } oldOffset = curOffset; }, 500); 

मैंने इस कोड का परीक्षण नहीं किया है, लेकिन सिद्धांत काम करना चाहिए।

मैं ऊपर की कुछ टिप्पणियों के साथ सहमत हूं जो एक समय समाशोधन सुनने के लिए पर्याप्त सटीक नहीं था क्योंकि जब आप स्क्रॉलिंग को बंद करने के बजाय लंबे समय तक स्क्रॉल बार को रोकते हैं, तब ट्रिगर होगा। मुझे लगता है कि एक बेहतर समाधान है कि उपयोगकर्ता को माउस (माउसउप) पर जाने के लिए सुनने के लिए जैसे ही वे स्क्रॉल शुरू करते हैं, सुनने के लिए होता है:

 $(window).scroll(function(){ $('#scrollMsg').html('SCROLLING!'); var stopListener = $(window).mouseup(function(){ // listen to mouse up $('#scrollMsg').html('STOPPED SCROLLING!'); stopListner(); // Stop listening to mouse up after heard for the first time }); }); 

और इसके काम का एक उदाहरण इस JSFiddle में देखा जा सकता है

 function scrolled() { //do by scroll start $(this).off('scroll')[0].setTimeout(function(){ //do by scroll end $(this).on('scroll',scrolled); }, 500) } $(window).on('scroll',scrolled); 

प्रारंभ और अंत की क्षमता के साथ बहुत छोटा संस्करण

ठीक है, यह ऐसा कुछ है जिसे मैंने पहले प्रयोग किया है मूल रूप से आप पिछले scrollTop() एक रेफरी को पकड़ कर देखें एक बार आपका समय समाप्त होने के बाद, आप वर्तमान scrollTop() और यदि वे एक समान हैं, तो आप स्क्रॉल करते हैं

 $(window).scroll((e) -> clearTimeout(scrollTimer) $('header').addClass('hidden') scrollTimer = setTimeout((() -> if $(this).scrollTop() is currentScrollTop $('header').removeClass('hidden') ), animationDuration) currentScrollTop = $(this).scrollTop() ) 

कृपया jquery मोबाइल scrollstop घटना की जांच करें

 $(document).on("scrollstop",function(){ alert("Stopped scrolling!"); });