2010-08-03 7 views
16

मैं इस तरह एक लेआउट मिल गया है:एक सूचकांक दिए गए बच्चों के तत्वों को हटा रहा है?

<div id='parent'> 

    <div id='row_0'></div> 

    <div id='row_1'></div> 

    <div id='row_2'></div> 

    ... 

    <div id='row_N'></div> 
</div> 

कुछ बिंदु पर, मैं सभी div "पंक्तियाँ" की तरह, एक निश्चित सूचकांक ऊपर निकालना चाहते हैं:

for (var index = 1; index < $('#parent').children.length; index++) { 
    $('#parent').remove('#row_' + index); 
} 

वहाँ एक आसान तरीका है jquery में ऐसा करने के लिए? कुछ 'इंडेक्स एन से शुरू होने वाले सभी बच्चों को हटा दें' जैसे कुछ?

(पाश वास्तव में काम नहीं करेगा के लिए ऊपर है, लेकिन कुछ ऐसी बातें हो, तो कोई दूसरा रास्ता नहीं मैं ऐसा होता है)

उत्तर

21

"बस हटाने (अलग) #parent, के सभी बच्चों तत्व N पर शुरू" :

$("#parent").children().slice(N).detach(); 

तत्वों पुनः लगाए जा करने के लिए नहीं जा रहे हैं, तो क्रम में remove() बजाय detach() का उपयोग डेटा और निकाले गए तत्वों के साथ जुड़े घटनाओं को छोड़ने के लिए।

+0

+1 - यह केवल जवाब यह है कि क्या ओ पी चाहता है (कम से और दिए गए इंडेक्स ऊपर तत्वों निकालने के लिए) करने के लिए लगता है। हालांकि, मैं केवल का उपयोग करेंगे '.detach()' आप उन्हें और फिर से डालने के लिए एक संदर्भ रखने के लिए जा रहे हैं, या यदि आप सुनिश्चित हों वहाँ * कोई * संलग्न 'डेटा'। – user113716

+0

... यह भी एकमात्र उत्तर है जो सुनिश्चित करता है कि केवल प्रत्यक्ष वंशज माना जाता है। – user113716

+0

@patrick, क्या मैं अलग() के बजाय निकालें() का उपयोग करूंगा? मुझे अब हटाए गए divs के संदर्भों की आवश्यकता नहीं है, और उनके कुछ बच्चे (प्रत्येक पंक्ति div के तत्वों में) के पास> डेटा <होगा। – user246114

8

lt selector और फिर remove उन्हें प्रयोग 2 से पंक्तियों 0 और 1 का चयन पंक्तियों कम निकालने के लिए:

$('#parent div:lt(2)').remove(); 
+0

ओह मैं एक सूचकांक की तुलना में अधिक पंक्तियों को दूर करने की आवश्यकता है? – user246114

+0

@ user246114 हां। http://api.jquery.com/gt-selector/ – Adam

+1

एक और बात: आप ज्ञात सूचकांक उपयोग 'eq' साथ तत्व को निकालना चाहते हैं। दस्तावेज़ीकरण [यहां] (http://api.jquery.com/eq-selector/)। –

4

यह एक पुरानी धागा है, लेकिन मैं उत्सुक हूँ * क्यों कोई nth-child उल्लेख किया है।

$("#parent > div:nth-child(n + " + index + ")").remove(); 

* अद्यतन: मैं समय पर यह पता करने के लिए पर्याप्त प्रतिनिधि नहीं था, लेकिन एक nth-child जवाब है, नष्ट कर दिया वहाँ गया था।

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