बदलें इस के लिए अपने समारोह:
var page = $("html, body");
$("section").click(function(e) {
page.on("scroll mousedown wheel DOMMouseScroll mousewheel keyup touchmove", function(){
page.stop();
});
page.animate({ scrollTop: $(this).position().top }, 'slow', function(){
page.off("scroll mousedown wheel DOMMouseScroll mousewheel keyup touchmove");
});
return false;
});
यह होगा:
- रोक एनीमेशन यदि उपयोगकर्ता स्क्रॉल मैन्युअल रूप से (केवल एनीमेशन के दौरान)
- अपने सामान्य jQuery एनीमेशन बाधा नहीं देता, अन्य उत्तर के इस तरह के कुछ होगा
कुछ अतिरिक्त जानकारी:
आप उन घटनाओं के सभी के लिए क्यों बाध्यकारी हैं? "स्क्रॉल mousewheel आदि ..."
स्क्रॉल घटनाओं के कई अलग-अलग प्रकार हैं। आप अपने माउस, कीबोर्ड, टचस्क्रीन इत्यादि का उपयोग करके नीचे स्क्रॉल कर सकते हैं। इसके साथ हम सभी को पकड़ने के लिए सुनिश्चित करते हैं।
var page = $("html, body");
का उपयोग क्या है? क्या मैं हर जगह $("html, body")
का उपयोग नहीं कर सकता?
यदि आप एक ही चयनकर्ता का एक से अधिक बार उपयोग करते हैं, तो variable में उन्हें कैश करने का अच्छा अभ्यास है। प्रोग्राम लिखना/उपयोग करना आसान होगा, और प्रोग्राम को हर बार चयनकर्ता की फिर से गणना करने से बेहतर प्रदर्शन होगा।
मुझे .animate()
और .stop()
पर और जानकारी कहां मिल सकती है?
आप .animate() और .stop() के लिए jQuery दस्तावेज़ पढ़ सकते हैं। मैं इस सिद्धांत पर .stop()
कार्यों के बाद से animation queue's पढ़ने की भी अनुशंसा करता हूं।
स्रोत
2013-08-26 13:43:41
धन्यवाद, यह पूरी तरह से काम करता है। सिर्फ एक सवाल है, मैं तत्वों पर क्लिकों को अनदेखा करना चाहता हूं, इसलिए यह हाइपरलिंक्स को प्रभावित नहीं करता है, मैंने चयनकर्ता में "सेक्शन: नहीं (ए)" कोशिश की लेकिन यह काम नहीं करता है। क्या आप चयनकर्ता को संपादित कर सकते हैं ताकि यह लिंक को अनदेखा कर सके? – lisovaccaro
यह मदद करनी चाहिए: http://stackoverflow.com/questions/2457246/jquery-click-function-exclude-children –
मुझे पता चला कि मुझे 'स्क्रॉल' और 'कीप' को बाध्य करने से हटा देना था, क्योंकि प्रारंभ में '$ (' सेक्शन ') पर क्लिक करते समय '.stop()' ट्रिगर हो रहा था (इस उदाहरण का उपयोग करके) – Crimbo