2009-02-16 8 views
5

मैं लिखित एक क्रमबद्ध तालिका को अनुकूलित करने की कोशिश कर रहा हूं। बाधा मैनिप्ल्यूशन में बाधा है। मैं वर्तमान में नई टेबल पंक्तियां बना रहा हूं और हर बार टेबल को सॉर्ट करते समय उन्हें सम्मिलित कर रहा हूं। मैं सोच रहा हूं कि क्या मैं पंक्तियों को पुन: व्यवस्थित करके चीजों को गति देने में सक्षम हो सकता हूं, नोड्स को दोबारा नहीं। इसके लिए एक महत्वपूर्ण अंतर बनाने के लिए, नोड बनाने के बजाय डोम नोड पुनर्व्यवस्था को बहुत अधिक स्नैपियर होना होगा। क्या यह मामला है? धन्यवाद, -Morganजावास्क्रिप्ट/डोम - वर्चुअल बनाम बनाम बनाम कितना महंगा बना रहा है?

+0

आपके द्वारा क्रमबद्ध तालिका में कितनी पंक्तियां हैं? –

+0

सैकड़ों, हजारों – morgancodes

+0

मैं इसे उत्तर के रूप में पोस्ट नहीं कर रहा हूं क्योंकि यह आपके प्रश्न का उत्तर देने के लिए डाउनवॉटेड नहीं होगा, लेकिन क्या आपने jQuery के लिए टेबलोर्ट प्लगइन देखा है? - http://tablesorter.com/docs/example-pager.html –

उत्तर

1

मैं कि क्या बनाने या जोड़ तोड़ तेजी से होता है पता नहीं है, लेकिन मैं पता है कि यह हो जाएगा तेज़ी से यदि आप पृष्ठ पर नहीं होने पर पूरी तालिका में हेरफेर करते हैं और फिर इसे एक ही समय में रखें। उन पंक्तियों के साथ, संभवतः मौजूदा पंक्तियों को फिर से व्यवस्थित करने के लिए धीमा हो जाएगा जब तक कि पूरी तालिका को पहले डीओएम से हटा दिया न जाए।

This page चलता है कि यह वर्तमान तालिका क्लोन है, यह हेरफेर के रूप में आप चाहते हैं, तो डोम पर तालिका को बदलने के लिए सबसे तेजी से होगा।

+0

ओह। दिलचस्प। धन्यवाद। – morgancodes

1

मैं इस तालिका को आंतरिक रूप से दो बार जितनी जल्दी कर रहा हूं, आंतरिक HTML का उपयोग करके, संपूर्ण सामग्री को स्ट्रिंग के रूप में एक स्ट्रिंग के रूप में बना रहा हूं, बजाय नोड्स को एक-एक करके डालने के बजाय।

+0

वाह, असल में, यह तकनीक आईई 6 में बहुत खराब बनाती है। – morgancodes

+1

स्ट्रिंग = स्ट्रिंग + न्यूस्ट्रिंग के बजाय, एक सरणी का उपयोग करें: var a = []; जबकि (लूप) {a.push (newstring)} परिणाम = a.join (""); // आईई में स्ट्रिंग concatenation भयानक धीमी है। मैंने एक बार परीक्षण किया जहां ओपेरा लगभग 4 सेकंड में समाप्त हुआ, और आईई अभी भी 20 मिनट के बाद समाप्त नहीं हुआ था। – some

+0

हाँ, मैं भी उस पर आया, लेकिन मैं जो कर रहा हूं, ऐसा लगता है कि आईई 6 में आंतरिक HTML का उपयोग करने से डोम नोड्स जोड़ने के लिए अभी भी तेज़ है। – morgancodes

0

यदि आप कर सकते हैं, तो डोम मैनिपुलेशन को वास्तविक डोम मैनिपुलेशन के रूप में नहीं करना बेहतर है, लेकिन आपकी स्क्रिप्ट के भीतर किसी प्रकार की विधि के रूप में और फिर डोम में हेरफेर करना। ऐसा करने के बजाय जिसे हर एक नोड पर एक पश्चाताप कहा जाता है, आप अपने एकल तरीके से प्रत्येक नोड पर अपने पेंट को क्या चाहते थे, और फिर उन नोड्स को एक अभिभावक में संलग्न करते हैं जो वास्तविक डोम से जुड़ा होता है, जिसके परिणामस्वरूप सैकड़ों के बजाय केवल दो पश्चाताप में। मैं कहता हूं कि दो बी/सी आपको अपने नए डेटा के साथ पहले से ही डोम में क्या है, इसे साफ़ करने की आवश्यकता है।

0

मैं इस का जवाब की तलाश में और एक त्वरित बेंचमार्क http://jsfiddle.net/wheresrhys/2g6Dn/6/

यह jQuery का उपयोग करती स्थापित करने का फैसला, तो एक शुद्ध बेंचमार्क नहीं है, और यह भी शायद अन्य तरीकों से विषम है किया गया था। लेकिन इसका नतीजा यह है कि चलने वाले डोम नोड्स लगभग हर बार डोम नोड्स बनाने और नष्ट करने के रूप में तेज़ होते हैं

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