मैं कुछ कोड है कि ठीक काम करता है, लेकिन यह बहुत ही धीमी हो रहा है:jQuery: दिखाई तत्वों की गिनती - दक्षता/गति समस्याओं
HTML:
मैं एक कंटेनर है कि लगभग 50 ul
तत्व शामिल है। प्रत्येक ul
तत्व में h4
शीर्षक है जिसके बाद li
तत्वों की एक श्रृंखला है। यदि कोई पंक्ति तत्व दिखाई नहीं दे रहा है तो फ़ंक्शन शीर्षक को छुपाता है।
जावास्क्रिप्ट/jQuery:
function show_or_hide_headings() {
$('#container').children('ul').each(function (i) {
var $this = $(this),
$h4 = $this.children(':first');
if ($this.children('li:visible').length) {
$h4.show();
} else {
$h4.hide();
}
});
}
यह काफी स्वीकार्य काम कर रहा था जब तक मैं li
तत्वों की प्रकृति बदल दिया है। प्रत्येक li
अब एक मिनी टेबल है जिसमें <table><tr><td>icon</td><td>text</td></tr></table>
शामिल है। अब प्रक्रिया में 2 सेकंड लगते हैं, जबकि यह पहले आधे सेकेंड से भी कम समय में काम करता था। (तालिका आइकन के नीचे टेक्स्ट रैपिंग को रोकने के लिए है।)
मुझे कबूल है कि मैं समझ नहीं पा रहा हूं कि प्रत्येक li
में अतिरिक्त तत्व जोड़ने के कारण डीओएम प्रोसेसिंग को इतना धीमा करना चाहिए क्योंकि मैंने .children
का उपयोग किया है केवल एक डोम परत गहरी जाने के लिए चयनकर्ता।
मैं भी कोशिश की है:
$('#container').find('h4').each(function (i) {
var $this = $(this);
if ($this.siblings('li:visible').length) {
$this.show();
} else {
$this.hide();
}
});
और अच्छा उपाय $('#container').children().children('h4')
।
क्या उल्लेखनीय है, यह भी है कि जब li
तत्व दिखाई देते हैं, तो यह कुछ दिखाई देने पर धीमा होता है। हालांकि, अब और अधिक लाइनें नहीं हैं, हालांकि, जब यह काफी तेज़ी से काम करती है (यानी, प्रत्येक पंक्ति में टेबल डालने से पहले)।
किसी भी सलाह बहुत सराहना, लेकिन मैं पोस्ट अधिक कोड से मेरे पास है :)
धन्यवाद का अनुरोध न करें।
आपको जो भी कहा गया है, उससे संबंधित मार्कअप का एक उदाहरण पोस्ट करने की आवश्यकता है, इसमें समस्याएं हैं। ए [यूएल] (http://www.w3.org/TR/html5/the-ul-element.html#the-ul-element) ** ** ** केवल LI बच्चे तत्व हैं, एच 4 त्रुटि हो रही है- सही किया गया है ताकि आपके पास वह संरचना न हो जो आपको लगता है कि आप करते हैं। साथ ही, LI की सामग्री को प्रारूपित करने के लिए तालिका अनावश्यक है, सीएसएस का उपयोग करें। ओह, और एच 4 में बच्चे नोड्स के रूप में LIs नहीं हो सकते हैं, उनके पास एक यूएल या ओएल माता-पिता होना चाहिए। – RobG
तालिका के बजाय अब्रैप के बारे में कैसे? इसके अलावा जब आप बच्चों को दूसरी तरफ से छुपाते हैं तो माता-पिता एच 4 को क्यों न छुपाएं? – mplungjan
ठीक है, धन्यवाद। मैं मार्कअप की जांच करूंगा और इस पर वापस आऊंगा। – Nick