(/ नीचे स्क्रॉल अप) अगर मैं आपकी समस्या को समझ में सही ढंग से, आप भी अक्सर घटनाओं आग देख रहे हैं। यहां मुद्दा यह है कि किसी दिए गए स्क्रॉल एक्शन के लिए, घटना कई बार आग लगती है। यदि आप अपने ब्राउज़र में डेवलपर कंसोल खोलते हैं और console.log(e.originalEvent.wheelDelta)
करते हैं तो आप इसे देख सकते हैं। यह आपके वांछित व्यवहार को फेंकने, कई छोटी स्क्रॉल घटनाओं में एक बड़ी स्क्रॉल तोड़ सकता है।
$(document).ready(function(){
var scrollPixels = 0; // variable to store scroll delta
$('body').bind('mousewheel', function(e){
// increment/decrement scroll delta
scrollPixels += e.originalEvent.wheelDelta;
console.log(scrollPixels);
if (scrollPixels < -20) {
scrollPixels = 0; // clear scroll delta
alert('Coming down!');
}
else if (scrollPixels > 20){
scrollPixels = 0; // clear scroll delta
alert('Coming up!');
}
});
});
फिर आप या तो ऊपर या नीचे चेतावनी आग के बाद पुस्तक डेल्टा स्पष्ट कर सकते हैं: तरह से मैं इस संभाला एक चर का उपयोग करने के लिए स्क्रॉल डेल्टा धारण करने के लिए किया गया था।
JS Fiddle
तुम भी रूप में सबसे स्क्रॉल इस घटना को सक्रिय कर देगा 20 से अधिक पिक्सल के लिए अपने परीक्षण को बढ़ाने के लिए चाहते हो सकता है - 20 पिक्सल ही के बारे में 1/4 एक इंच का है।
उम्मीद है कि मदद करता है। यदि यह आपकी समस्या को ठीक नहीं करता है, तो इस पर टिप्पणी करने में संकोच न करें कि मैं कहां गलत हुआ। शुभकामनाएँ!
पता टिप्पणी करने के लिए अद्यतन:
आप जब तक स्क्रॉल समय समाप्त करने के बाद स्क्रॉल को क्रियान्वित करने बंद कर दिया है समय की एक छोटी राशि (इस उदाहरण में 250 एमएस) इंतजार करेंगे की स्थापना द्वारा बंद हो जाता है इंतज़ार कर सकते हैं। मैं इस समय समाप्ति के अंदर तर्क ले जाया गया ताकि यह केवल के बाद स्क्रॉल बंद कर दिया है चलेंगे: बहुत बहुत शुक्रिया अपने समय के लिए
$(document).ready(function(){
var scrollPixels = 0; // variable to store scroll delta
var scrolling; // timeout function var
$('body').bind('mousewheel', function(e){
// increment/decrement scroll delta
scrollPixels += e.originalEvent.wheelDelta;
console.log(scrollPixels);
clearTimeout(scrolling);
scrolling = setTimeout(function() {
console.log('stop wheeling! ', scrollPixels);
scrolling = undefined;
if (scrollPixels < -300) {
scrollPixels = 0; // clear scroll delta
alert('Coming down!');
}
else if (scrollPixels > 300){
scrollPixels = 0; // clear scroll delta
alert('Coming up!');
}
}, 250);
});
});
अपडेट किया गया JS Fiddle
अरे,! यह जो मैं ढूंढ रहा हूं उसके करीब है। मैंने मूल्य बढ़ाया है और इसे एक var (http://jsfiddle.net/marianrick/t7y3aLfh/3/) में संग्रहीत किया है। जैसे ही मैं वास्तव में तेज़ी से स्क्रॉल करता हूं (एक बार), मुझे यह '300px' के लिए यह अलर्ट मिलता है। स्क्रॉल इवेंट समाप्त होने तक, केवल एक बार इसे आग लगने की संभावना है (भले ही 2000px स्क्रॉलिंग हो)? (आप यहां लाइव साइट देख सकते हैं: http://img.hiamovi-client.com - मैं केवल स्क्रॉलिंग पर एक स्लाइड को स्क्रॉल करना चाहता हूं) –
हाय मैरियन, खुशी है कि मैं मदद कर सकता हूं। मैंने कोड और पहेली का दूसरा ब्लॉक जोड़ा जो आपकी टिप्पणी को संबोधित करना चाहिए। यदि इससे सहायता मिलती है तो मुझे बताएं! – grdevphl
इस चिमटा के लिए बहुत बहुत धन्यवाद! साइट का उपयोग करते समय '250' काफी ध्यान देने योग्य देरी है। इसे '50' पर सेट करना पहले से ही एक आकर्षण की तरह काम करता है। –