2010-12-22 18 views
8

कोड का यह निम्न टुकड़ा काम करता है, लेकिन यह ब्राउज़र को थोड़ा सा बनाता है। कोई बड़ी बात नहीं। मैं सोच रहा हूं कि यह और अधिक कुशल बनाने का कोई तरीका होगा? क्या मैं कैशिंग का उपयोग कर सकता हूं या किसी भी तरह से एक चयन को पॉप्युलेट कर सकता हूं और फिर इसे अन्य 5 पर कॉपी कर सकता हूं। (पेज पर 'मास्क' की श्रेणी के साथ 6 ड्रॉप डाउन हैं।)अधिक कुशल jquery

किसी भी मदद की सराहना की जाएगी!

$('.mask').each(function() { 
    $(this).append($('<option/>').val("").text("")); 
    for (var i = 1; i < 256; i++) { 
     $(this).append($('<option/>').val(i).text(i)); 
    } 
    }); 
}); 

उत्तर

12

आप नोड्स बना सकते हैं एक बार फिर उन्हें क्लोन, इस तरह: इसके बजाय व्यक्ति की एक बहुत कुछ कर के

var temp = $('<select/>'); 
$('<option/>').val("").text("").appendTo(temp); 
for (var i = 1; i < 256; i++) { 
    $('<option/>').val(i).text(i).appendTo(temp); 
} 
temp.children().clone().appendTo('.mask'); 

डोम को संलग्न कर देता है (जो बहुत महंगा है) यह सब तत्वों अप बैचों एक दस्तावेज़ खंड में फिर उन्हें क्लोन, बैचों में संलग्न (प्रति बैच एक बैच)।

+0

क्या कोई विस्तार कर सकता है कि इसे क्यों पसंद किया गया है, भले ही यह ऊपर के समाधान के जितना तेज़ न हो? –

+0

@ केली - आपके नोड्स के डीओएम निर्माण का उपयोग करना सुरक्षित है, उदाहरण के लिए मूल्य में उद्धरण, आदि (हालांकि * इस विशेष मामले * में सुरक्षित) समस्याएं, अमान्य HTML और अप्रत्याशित प्रतिपादन का कारण बनेंगे। सुरक्षित होने के लिए, डीओएम निर्माण विधियों के साथ चिपके रहें, स्ट्रिंग पीढ़ी के माध्यम से एचटीएमएल नहीं। –

6

यह बहुत तेजी से (3-10 चारों ओर बार, परीक्षण किया के रूप में here) एक एकल स्ट्रिंग में HTML खुद को बनाने के लिए:

var html = "<option value=''></option>"; 
for (var i = 1; i < 256; i++) { 
    html += "<option value='" + i + "'>" + i + "</option>"; 
} 
$(".mask").append(html); 

देखें प्रदर्शन परीक्षण इस सूत्र में मौजूदा विकल्पों की तुलना: http://jsperf.com/appending-options-jquery

+0

यह स्पष्ट रूप से समाधान जितना तेज़ है, लेकिन ऐसा लगता है कि हर कोई क्या उपयोग करना पसंद नहीं करता है? क्या कोई विस्तार कर सकता है कि यह नीचे दिए गए समाधान के रूप में उतना अच्छा क्यों नहीं है? –

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