2012-02-25 16 views
15

मेरे पास कई पंक्तियों (+50) और कोशिकाओं (+50) वाली एक तालिका है। अब मैं एन jQuery के साथ पहली या अंतिम कोशिकाओं को हटाना चाहता हूं।jQuery के साथ पहले या अंतिम तत्वों की 'n' संख्या को इष्टतम तरीके से कैसे हटाएं?

var n = 10; 
var last = true; 
for (var i = 0; i < n; i++) { 
    table.find('tr').each(function() { 
     if(last)   
     $(this).find('td:last').remove(); 
     else 
     $(this).find('td:first').remove(); 
    }); 
} 

नोट:: table एक jQuery तत्व है वर्तमान में मैं निम्नलिखित कोड है।

कोड काम करता है, लेकिन बहुत धीमा करता है जब मेरे पास 50 कोशिकाओं के साथ 50 पंक्तियों वाली तालिका होती है और मैं 10 अंतिम कोशिकाओं को हटा देता हूं। कोई विचार कैसे कोड को अनुकूलित करने के लिए?

संपादित करें: मैंने पहले खंड को भी जोड़ा है।

उत्तर

25

इष्टतम मुझे लगता है कि nth-last-child का उपयोग कर सकता है।

table.find("tr td:nth-last-child(-n+10)").remove();​ 

लाभ है कि आंतरिक ब्राउज़र CSS चयनकर्ता इंजन का उपयोग किया जाएगा (या IE jQuery के मामले में मदद मिलेगी एक छोटे :) यहाँ demo पिछले 3 तत्वों को हटाने है। इसे अपने मामले में 10 में बदलें।

+0

'n-th-last-child ऑपरेटर 'का बहुत चालाक उपयोग, मुझे यह पसंद है :) – ntziolis

+0

यह अद्भुत काम करता है! मुझे यह पसंद है ... यह छोटा, सुरुचिपूर्ण और प्रदर्शन करता है! –

-3

वैकल्पिक रूप से आप इसे आजमा सकते हैं।

var n = 3; 
var len = table.find('tr').length; 
table.find('tr:gt(' + (len - n - 1) + ')').find('td:last').remove();​ 
-1

आप Greater Than चयनकर्ता का उपयोग कर सकते हैं। यह मिलान किए गए सेट के भीतर इंडेक्स से अधिक सूचकांक में सभी तत्वों का चयन करता है। पहले तत्वों की संख्या (टीडी) की गणना करें। 10 घटाएं और फिर चयनकर्ता से अधिक का उपयोग करें।

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