2008-12-15 19 views
253

jQuery का उपयोग करके, मैं पहले को छोड़कर किसी तालिका में सभी पंक्तियों को कैसे हटा सकता हूं? इंडेक्स चयनकर्ताओं का उपयोग करने में यह मेरा पहला प्रयास है। अगर मैं उदाहरण सही ढंग से समझ, निम्नलिखित काम करना चाहिए:jQuery सभी तालिका पंक्तियों को हटाएं पहले

$(some table selector).remove("tr:gt(0)"); 

जो मैं के रूप में पढ़ा होगा "एक jQuery वस्तु में कुछ तालिका लपेटें, तो हटाने सब 'tr' तत्व (पंक्तियाँ) जहां इस तरह के पंक्तियों की तत्व सूचकांक शून्य से बड़ा है "। हकीकत में, यह त्रुटि उत्पन्न किए बिना निष्पादित करता है, लेकिन तालिका से किसी भी पंक्ति को नहीं हटाता है।

मुझे क्या याद आ रही है, और मैं इसे कैसे ठीक करूं? बेशक, मैं सीधे जावास्क्रिप्ट का उपयोग कर सकता हूं, लेकिन मुझे jQuery के साथ इतना मज़ा आता है कि मैं इसे jQuery का उपयोग करके हल करना चाहता हूं।

+0

कोई भी जानता है कि दिया गया कोड क्यों काम नहीं कर रहा है? मुझे हटाने की समस्या में फ़िल्टर चयनकर्ता डालने पर भी समस्या है – Leto

+1

अब जब मैं इसे बेहतर समझता हूं, तो उपरोक्त कोड काम नहीं करता है क्योंकि $ (कुछ तालिका चयनकर्ता) केवल तालिका तत्व का चयन करता है, न कि उसके किसी भी बच्चे, इसलिए कोई ' खोजने के लिए निकालें समारोह के लिए tr 'तत्व। तालिका तत्व के बच्चों के बीच मिलान के लिए खोज फ़ंक्शन खोज का उपयोग करना। –

+0

इस उत्तर को देखें http://stackoverflow.com/questions/4831334/jquery-selector-all-but-the-first/18322370#18322370 – AuthorProxy

उत्तर

461

यह काम करना चाहिए:

$(document).ready(function() { 
    $("someTableSelector").find("tr:gt(0)").remove(); 
}); 
+8

बहुत धन्यवाद - जो पूरी तरह से काम करता है। –

+2

क्या होगा यदि मैं पहले और दूसरे को छोड़कर तालिका पंक्तियों को हटाना चाहता हूं? –

+14

@ user594166 gt (0) के बजाय gt (1) का उपयोग करें। – christianvuerings

28

आपका चयनकर्ता अपने निकालने के अंदर होने की जरूरत नहीं है।

$("#tableID tr:gt(0)").remove(); 

TableID की आईडी के साथ तालिका में पहले छोड़कर हर पंक्ति का चयन करें और उन्हें डोम से हटा दें जिसका मतलब है:

यह कुछ ऐसा दिखाई देगा।

+0

मैं सहमत हूं। मेरे मामले में, तालिका वस्तु पहले से चुना गया था। –

+1

किसी भी तरह यह मेरे लिए काम किया गया है – Shekhar

+0

पहले पंक्तियों को छोड़कर सभी पंक्तियों को निकालने के लिए: - $ ("# tableID tr: gt (1)")।(); – Biki

100

मुझे लगता है कि यह अधिक पठनीय है आशय दिया:

$('someTableSelector').children('tr:not(:first)').remove(); 

का उपयोग करते हुए बच्चों को भी इस मामले में जहां पहली पंक्ति खोज की गहराई को सीमित करके एक मेज शामिल का ख्याल रखता है।

आप एक tbody तत्व था, तो आप ऐसा कर सकते हैं:

$("someTableSelector > tbody:last").children().remove(); 

आप ठेड या tfoot तत्वों है, तो आप कुछ अलग करने की आवश्यकता होगी।

+3

मैं सहमत हूं - धन्यवाद। काश मैं कई उत्तरों का पुरस्कार दे सकता हूं। –

+2

पुन: कुछ अलग करें .... यह काम करता है: '$ ('कुछटेबल चयनकर्ता> टैब: आखिरी> tr: नहीं (: पहले)')। हटाएं(); – Cheeso

+0

सभी बच्चों को हटाने के लिए मुझे डबल कोट्स का उपयोग करना पड़ा। अन्यथा इसे पहचान नहीं लिया। '$ (" # कार्य ")। बच्चे()। हटाएं();' – Doomsknight

35

तो यह मेरे थे, शायद मैं इसे एक भी चयनकर्ता के उबाल था नीचे:

$('someTableSelector tr:not(:first)').remove(); 
+0

सहमत हैं, लेकिन अधिक स्पष्ट यह कहना चाहिए: $ ('कुछटेबल चयनकर्ता टीबीआर: नहीं (: पहले)')। (हटाएं); –

33

एक और तरीका है यह पूरा करने में thead और tbody तत्वों के साथ jQuery के खाली() फ़ंक्शन उपयोग कर रहा है अपने तालिका। एक मेज के

उदाहरण:

<table id="tableId"> 
<thead> 
    <tr><th>Col1</th><th>Col2</th></tr> 
</thead> 
<tbody> 
    <tr><td>some</td><td>content</td></tr> 
    <tr><td>to be</td><td>removed</td></tr> 
</tbody> 
</table> 

और jQuery आदेश:

$("#tableId > tbody").empty(); 

यह आपके तालिका के tbody तत्व में निहित हर पंक्तियों को हटाने और thead तत्व जहां अपने हैडर चाहिए रखेंगे हो। यह तब उपयोगी हो सकता है जब आप केवल तालिका की सामग्री को ताज़ा करना चाहते हैं।

+2

शायद यह पेशकश किए गए सभी समाधानों का सर्वश्रेष्ठ प्रदर्शन करने जा रहा है, और यह बहुत ही सुरुचिपूर्ण है। –

6

आईडी tbl के साथ एक मेज पर विचार करें: jQuery कोड होगा:

$('#tbl tr:not(:first)').remove(); 
5
$('#table tr').slice(1).remove(); 

मुझे लगता है कि 'टुकड़ा' भर में आ याद सभी अन्य तरीकों की तुलना में तेजी है, इसलिए केवल इसे यहाँ डाल।

+0

कुछ ने मेरे लिए काम नहीं किया। स्वीकृत उत्तर चाल करना प्रतीत होता है। – dotslash

0

-क्षमा करें यह बहुत देर हो चुकी है।

सबसे आसान तरीका है मैं किसी भी पंक्ति (और यात्रा के माध्यम से अन्य सभी पंक्तियों) को हटाने के लिए मिल गया है है इस

$ ('# rowid', '# TableID') को हटाने()।;

शेष आसान है।

$("#dataTable tr:gt(1)").remove();

1

नीचे कोड सभी पंक्तियों निकालने के लिए, पहले एक (हेडर को छोड़कर) को छोड़कर, का उपयोग

function remove_rows(tablename) { 
    $(tablename).find("tr:gt(0)").remove();   
} 

तो यह फोन :

remove_rows('#table1'); 
remove_rows('#table2'); 
0

यह पूरी तरह से काम करता है

$("#myTable tbody").children('tr:not(:first)').html(""); 
+0

हाँ, यह पहले से ही कई बार पोस्ट किया गया था। कुछ नया? –

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