2012-10-27 32 views
15

जब मैं $("body").animate({scrollTop: someValue}); पर कॉल करता हूं तो मुझे $(window).scroll(function() { }); भी कॉल किया जाना चाहिए। मैं उसे कैसे प्राप्त कर सकता हूं?

मैंने सफलता के बिना $(window).trigger("scroll") और $(window).triggerHandler("scroll") के साथ प्रयास किया है।

The code

संपादित करें: समस्या को हल किया। मेरे $(window).scroll(function() { }); में if था जिससे समस्या उत्पन्न हुई।

+0

एनीमेशन टाइप क्या है? और क्या होगा यदि आप 'easyIn' जैसे उलटा कॉमा के अंदर एनीमेशन टाइप का उपयोग करते हैं? – 2619

+0

@ al0neevenings यह समस्या नहीं है। बॉडी सेक्शन स्क्रॉल करता है, लेकिन '$ (विंडो) .scrollU(); 'कॉल नहीं किया जाता है। – Sawny

+1

क्या आप यह भी पोस्ट कर सकते हैं कि 'स्क्रॉल' से जुड़ी विधि क्या कर रही है? –

उत्तर

7

दोनों body और html के रूप में यह संगत नहीं है .. करने के लिए इसे लागूhttp://jsfiddle.net/vzyVh/

पर

$("html, body").animate({scrollTop: someValue}); 

डेमो (उदाहरण के लिए, एफएफ स्क्रॉल करते समय क्रोम body का उपयोग करता है के लिए html उपयोग करता है)

+0

1) मेरी समस्या का समाधान नहीं करता है। 2) फिर कॉलबैक दो बार बुलाया जाता है। – Sawny

+0

@sawny, केवल तभी जब आपने विशेष रूप से अपने सीएसएस को 'html' और 'body' को स्क्रॉल करने की अनुमति देने के लिए बनाया है। डिफ़ॉल्ट रूप से केवल उन स्क्रॉल में से एक .. इसके अतिरिक्त: 'विंडो' पर लागू 'स्क्रॉल' विधि केवल एक बार नहीं कहा जाता है। इसे प्रत्येक स्क्रॉलिंग चरण के लिए बुलाया जाता है .. –

+1

नीचे दिए गए स्क्रॉलिंग के लिए http://stackoverflow.com/a/12792245/1504300 के साथ इस उत्तर को मिश्रित करें। – reallynice

1

आप नीचे दिए गए कोड की कोशिश कर सकते हैं - यहाँ मैं अपने div टैग जो आईडी "एक" है के शीर्ष पर स्क्रॉल करके कर रहा हूँ।

$('html,body').animate({ scrollTop: $('#one').offset().top }, 'slow');