$ (खिड़की) .scrollTop () बनाम $ (दस्तावेज़) .scrollTop ()


जवाबों:


149

वे दोनों एक ही प्रभाव के लिए जा रहे हैं

लेकिन, जैसा कि टिप्पणी में कहा: $(window).scrollTop()अधिक वेब ब्राउज़र द्वारा समर्थित है की तुलना में $('html').scrollTop()


3
यह IE8 में 0 देता है (हालांकि मेरा पृष्ठ quirks मोड में है, जो एक कारक खेल सकता है)
ग्रेग ऑगल

38
$ ('html')। ScrollTop () क्रॉस-ब्राउज़र नहीं है (एक सेटर के रूप में यह कम से कम क्रोम में काम नहीं करता है)। अब के लिए इसे करने का सबसे क्रॉसब्रोसर तरीका है: $ (विंडो) .scrollTop () एक गेटर के रूप में, $ ('html, बॉडी')। एक सेटर के रूप में स्क्रॉलटॉप (ऑफसेट)।
जॉर्जी इवानकिन

6
इस संदर्भ के अनुसार , तर्कों के बिना scrollTopकहीं भी स्क्रॉल नहीं होता है, लेकिन बस वर्तमान स्क्रॉल स्थान देता है।
या मैपर

3
@ d2burke scrollTop()एक गेट्टर है और scrollTop(value)एक सेटर है। scrollTop()बिना तर्क के स्क्रॉल की स्थिति नहीं बदलती है।

1
@ M98 window.scrollTo (x, y)
Bodman

36

सबसे पहले, आपको windowऔर के बीच के अंतर को समझने की जरूरत है documentwindowवस्तु एक शीर्ष स्तर ग्राहक के पक्ष वस्तु है। windowवस्तु के ऊपर कुछ भी नहीं है । जावास्क्रिप्ट एक वस्तु केंद्रित भाषा है। आप एक वस्तु से शुरू करते हैं और इसके गुणों या इसके समूह के गुणों के तरीकों को लागू करते हैं। उदाहरण के लिए, documentवस्तु windowवस्तु है। बदलने के लिए documentकी पृष्ठभूमि रंग, आप सेट करते हैं documents ' bgcolorसंपत्ति।

window.document.bgcolor = "red" 

अपने प्रश्न का उत्तर देने के लिए, के बीच अंतिम परिणाम में कोई अंतर नहीं है windowऔर document scrollTop। दोनों एक ही आउटपुट देंगे।

Http://jsfiddle.net/7VRvj/6/ पर काम करने के उदाहरण देखें

सामान्य उपयोग में documentमुख्य रूप से घटनाओं रजिस्टर और उपयोग करने के लिए windowकी तरह काम करने के लिए scroll, scrollTopऔर resize


अंतिम परिणाम में कोई अंतर नहीं। दोनों एक ही आउटपुट देंगे।
हुसैन

स्पष्ट रूप से, कुछ ब्राउज़र विंडो स्क्रॉल का समर्थन नहीं करते हैं क्योंकि विंडो ऑब्जेक्ट ओवरफ्लो होने वाली वस्तु नहीं हो सकती है।
बोडमैन

11
ब्राउज़र विंडो का समर्थन नहीं करता है, विशिष्ट हो। यहाँ एक उदाहरण jsfiddle.net/7VRvj/4 है । इसे सभी ब्राउज़रों में देखें और मुझे बताएं कि यह किस ब्राउज़र पर काम नहीं कर रहा है।
हुसैन

4

ऐसा करने का क्रॉस ब्राउज़र तरीका है

var top = ($(window).scrollTop() || $("body").scrollTop());

1
नोट: $("body").scrollTop()Google Chrome में हमेशा 0 लौटाएं।
जोनाथन पेरेंट लेवेस्क

2
$("body").scrollTop()पदावनत किया जाता है, अब क्रोम या एफएफ पर काम नहीं करता है । यह 0
जार्ज लाजो

0

मैं बस के साथ इसी तरह की समस्याओं में से कुछ था scrollTop यहाँ वर्णित के ।

अंत में मुझे चयनकर्ता का उपयोग करके फ़ायरफ़ॉक्स और IE पर इसके चारों ओर मिला$('*').scrollTop(0);

सही नहीं है यदि आपके पास ऐसे तत्व हैं जिन्हें आप प्रभावित नहीं करना चाहते हैं, लेकिन यह दस्तावेज़, निकाय, HTML और विंडो असमानता के आसपास हो जाता है। यदि यह मदद करता है ...


20
आपको कभी भी इस तरह का उपयोग नहीं करना चाहिए (वास्तव में, पूरी तरह से बचें)। एक तत्व को लक्षित करने के बजाय, आप संपूर्ण DOM को प्रभावित कर रहे हैं। बड़ा प्रदर्शन हिट हुआ। चयनकर्ता यथासंभव सटीक होना चाहिए।
व्लाद

2
मैंने व्यक्तिगत रूप से हमेशा उपयोग किया है $("html,body").scrollTop(val)- कभी भी कोई मुद्दा नहीं था
रूई
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.