2009-11-09 6 views
7

मैं दो जे एस काम करता है, एक है कि एक का चयन करें बॉक्सडीओएम मैनिपुलेशन के बाद पेज की स्क्रॉल स्थिति रीसेट कैसे रोकें?

function addOption(selectId, text, value) { 
    var selectbox = document.getElementById(selectId); 
    var optNew = document.createElement('option'); 
    optNew.text = text; 
    optNew.value = value; 
    try { 
     selectbox.add(optNew, null); //page position resets after this 
    } 
    catch(ex) { 
     selectbox.add(optNew); 
    }  
} 

करने के लिए विकल्पों को जोड़ रहा है मिल गया है और एक अन्य में एक समान रूप सरल समारोह में एक document.getElementById (formId) .appendChild (newHiddenInput) कर रही है।

वे दोनों काम करते हैं, तत्वों को अपेक्षित के रूप में जोड़ा जाता है। हालांकि, उनमें से किसी एक को कॉल करने पर, पृष्ठ आईई 6 और एफएफ दोनों में पृष्ठ के शीर्ष पर अपनी स्क्रॉल स्थिति रीसेट करता है। कोई पोस्टबैक नहीं है, यह पूरी तरह से क्लाइंटसाइड हेरफेर है। मैंने फायरबग में ब्रेकपॉइंट्स सेट किए हैं, और यह तत्व के तुरंत बाद होता है .appendChild या select.add निष्पादित हो जाता है। मुझे पता है कि मैं स्क्रॉल स्थिति मैन्युअल रूप से सेट करने के लिए जेएस का उपयोग कर सकता हूं, लेकिन मुझे नहीं लगता था कि पृष्ठ को फिर से प्रस्तुत नहीं किया जा रहा था जब यह आवश्यक था।

मैं जेएस या डोम के साथ कोई विशेषज्ञ नहीं हूं, इसलिए मुझे कुछ याद आ रही है, लेकिन मैंने here देखा है और इसे यहां उदाहरणों के साथ अपने उदाहरणों के माध्यम से चलाया है और मैं समस्या को दोहराना नहीं कर सकता, मैं जिस कोडबेस के साथ काम कर रहा हूं उसका संकेत है अपराधी है।

कोई विचार क्यों स्क्रॉल स्थिति रीसेट हो रही है? jQuery भी मेरे लिए उपलब्ध है, अगर यह एक बेहतर विकल्प प्रदान करता है।

http://www.website.com/page.html# 

यह कहा व्यवहार उत्पन्न कर रहा है:

उत्तर

9

कार्यों एक लिंक से बुलाया जा रहा रहे हैं, तो आप अपने लिंक में एक आंतरिक लंगर हो सकता है। डिफ़ॉल्ट व्यवहार यह है कि यदि एंकर मौजूद नहीं है, तो पृष्ठ स्क्रॉल स्थिति शीर्ष पर जाती है (scrollTop = 0)।

यदि यह स्रोत के बावजूद प्रत्येक फ़ंक्शन कॉल पर होता है, तो इसे सूची से बाहर किया जा सकता है।

4

घटना को सक्रिय करने वाला क्या है?

यदि यह एक एंकर है तो क्लिक ईवेंट पर आपको "झूठी वापसी" की आवश्यकता है; अपने jQuery/अजाक्स/जेस्क्रिप्ट कोड पर कॉल करने के बाद।

यदि यह एक बटन है तो आपको ऐसा करने की आवश्यकता हो सकती है।

मुझे कल यह समस्या थी और यह संकल्प था।

तो <a href="#" onclick="DoStuff(); return false;">My link</a>

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