2010-07-28 15 views
7

क्या jQuery में पहले सेक्रॉल ईवेंट है? या इस तरह की घटना को दोहराया जा सकता है?jQuery से पहले jQuery स्क्रॉल ईवेंट

हमारे पास एक परिदृश्य है जहां हमें ओवरफ्लो के साथ एक div से पहले एक ईवेंट करने की आवश्यकता है: स्क्रॉल स्क्रॉल किया गया है। .scroll घटना का उपयोग करने में समस्या यह है कि div को पहले की बजाय स्क्रॉल किए जाने के बाद उठाया जाता है।

+2

स्क्रॉल करने के बाद आपका मतलब है लेकिन वास्तविक स्क्रॉलिंग होने से पहले? – David

+1

@ डेविड - हाँ, स्पॉट ऑन। –

उत्तर

6

नहीं, ऐसी कोई घटना नहीं है। स्क्रॉल इवेंट को रद्द नहीं किया जा सकता है (स्पष्ट कारणों से) और मैं अनुमान लगाता हूं कि यह कार्रवाई के बाद आग लगती है ताकि स्क्रॉलटॉप और स्क्रोल लाइफ गुणों को एक्सेस करते समय सटीक हैं।

संभावित समाधानों माउसव्हील/DOMMouseScroll घटनाओं और पेज के लिए keydown घटनाओं, पेज चाबियाँ पर कब्जा करने के लिए नीचे, ऊपर, नीचे, आदि हो सकता है। हालांकि, कोई 100% विधि नहीं है - आप कभी भी ब्राउज़र के स्क्रॉलबार घटकों के साथ बातचीत करने से रोकने में सक्षम नहीं होंगे। अपने स्वयं के स्क्रॉलबार को रोल करने का एकमात्र सच्चा समाधान है।

तुम सिर्फ राशि उपयोगकर्ता स्क्रॉल को खोजने के लिए देख रहे हैं, तो आप एक चर में वर्तमान scrollLeft/scrollTop की दुकान और फिर उन्हें बनाम स्क्रॉल घटना में नया मान की जाँच करने के लिए एक टाइमर सेट कर सकते हैं।

+0

तो क्या मैं ईवेंट को तब तक पकड़ सकता हूं जब उपयोगकर्ता ब्राउज़र स्क्रॉलबार पर क्लिक करता है .scroll ईवेंट को निकाल दिया जाता है? अर्थात। स्क्रॉल घटना से पहले कीडाउन घटना आग लगती है? –

+0

@Robert: नहीं, स्क्रॉलबार एक यूआई तत्व है और माउस घटनाओं को आग नहीं करेगा। कुंजीपटल घटना स्क्रॉल ईवेंट से पहले आग लग जाएगी क्योंकि यदि आप चाहें तो कुंजी के साथ स्क्रॉलिंग को रोकने के लिए इसे रद्द कर दिया जा सकता है। जैसे मैंने कहा, कोई 100% विधि नहीं है, सबसे अच्छा आप अपनी खुद की स्क्रॉलबार बना सकते हैं। –

0

मैं एक कच्चे रास्ते पता चला कि आश्चर्यजनक रूप से गैर-laggy होने के लिए इस हल:

मैं स्थिति अपने आप जाँच स्थान सीमा है कि मैं चाहता हूँ, = स्थिति का उपयोग कर तय भीतर है कि उसके बाद अद्यतन करते हैं, और बदल शीर्ष मूल्य।

संबंधित मुद्दे