jQuery पहले को छोड़कर सभी तालिका पंक्तियों को हटा देता है


280

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

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

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

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


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

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

इस उत्तर को देखें stackoverflow.com/questions/4831334/…
AuthorProxy

जवाबों:


522

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

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

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

18
@ user594166 gt (0) के बजाय gt (1) का उपयोग करें।
क्रिश्चियनविंग्स

6
JQuery वेबसाइट से: Because :gt() is a jQuery extension and not part of the CSS specification, queries using :gt() cannot take advantage of the performance boost provided by the native DOM querySelectorAll() method. For better performance in modern browsers, use $("your-pure-css-selector").slice(index) instead. मैं $ ("# mytable> tr") का उपयोग करने की सलाह दूंगा। स्लाइस (1) .remove ();
क्रिस_एफ

आपके कोड ने मेरे लिए काम नहीं किया .. मैंने gt (0) को gt (1) में बदल दिया और यह काम कर गया।
साधक

113

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

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

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

यदि आपके पास एक TBODY तत्व है, तो आप यह कर सकते हैं:

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

यदि आपके पास THEAD या TFOOT तत्व हैं, तो आपको कुछ अलग करने की आवश्यकता होगी।


2
पुन: कुछ अलग करें .... यह काम करता है:$('someTableSelector > tbody:last > tr:not(:first)').remove();
Cheeso

सभी बच्चों को निकालने के लिए मुझे दोहरे उद्धरण चिह्नों का उपयोग करना पड़ा। नहीं तो पहचान लिया। $("#tasks").children().remove();
प्रातः काल

40

इसे पूरा करने का एक और तरीका है आपकी तालिका में 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 तत्व रखें। यह उपयोगी हो सकता है जब आप केवल एक तालिका की सामग्री को ताज़ा करना चाहते हैं।


3
यह संभवतः सभी समाधानों की पेशकश का सबसे अच्छा प्रदर्शन करने वाला है, और बहुत ही सुरुचिपूर्ण है।
thejxc

38

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

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

सहमत हैं, लेकिन अधिक स्पष्ट रूप से यह कहना होगा: $ ('someTableSelector tbody tr: not (:))))। Remove ();
मार्को म्यूसिनो

30

आपके चयनकर्ता को आपके निष्कासन के अंदर होने की आवश्यकता नहीं है।

यह कुछ इस तरह दिखना चाहिए:

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

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


मैं सहमत हूँ। मेरे मामले में, तालिका ऑब्जेक्ट पहले से चयनित थी।
केन पॉल

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

9
$('#table tr').slice(1).remove();

मुझे याद है कि 'स्लाइस' अन्य सभी दृष्टिकोणों की तुलना में तेज़ है, इसलिए इसे यहाँ रखना है।


कुछ यह मेरे लिए काम नहीं किया। स्वीकार किए जाते हैं उत्तर चाल करने के लिए लगता है।
अंकुश

gtनिकाला जाता है, यह सबसे अच्छा जवाब है।
साइबरएड


3

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

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


1

सबसे आसान उपाय :

$("#mytable").find($("tr")).slice(1).remove()

-प्रथम तालिका के संदर्भ को
भूल जाओ तत्वों की सूची और इसे टुकड़ा और सूची के चयनित तत्वों को हटा दें


0

-इस बात का जवाब बहुत देर से मिला।

मैंने किसी भी पंक्ति (और पुनरावृति के माध्यम से अन्य सभी पंक्तियों) को हटाने का सबसे आसान तरीका पाया है

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

बाकी सब आसान है।



0

एक समारोह में लिपटे:

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

इसने मेरे मामले में निम्नलिखित तरीके से काम किया और ठीक काम किया

$("#compositeTable").find("tr:gt(1)").remove();
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.