2010-12-28 18 views
5

हटाना मैं एक मेज है और मार्कअप नहीं बदल सकते:jQuery तालिका स्तंभ

<table> 
    <thead> 
     <tr> 
      <th> 
       blablabla 
      </th> 
      <th> 
       blablabla 
      </th> 
     </tr> 
    </thead> 
    <tbody> 
     <tr> 
      <td> 
       efgd 
      </td> 
      <td> 
       efghdh 
      </td> 
     </tr> 
    </tbody> 
</table> 

यहाँ मेरी समारोह है, जो एक स्तंभ को हटा देना चाहिए। इसे सेल क्लिक पर कहा जाता है:

function (menuItem, menu) { 
    var colnum = $(this).prevAll("td").length; 

    $(this).closest('table').find('thead tr th:eq('+colnum+')').remove(); 
    $(this).closest("table").find('tbody tr td:eq('+colnum+')').remove();  
    return; 
} 

लेकिन यह कुछ और हटा देता है, न कि कॉलम जिसे मैं हटाना चाहता हूं। मैं कहाँ गलत हूँ?

+0

मैं यहां आपका इरादा नहीं देख सकता, कृपया अधिक कल्पना दें ific। आप इसे सभी या सिर्फ विशिष्ट कॉलम हटाना चाहते हैं? –

उत्तर

12

एक कॉलम बहुत अधिक कोशिकाओं है, इसलिए आपको सभी पंक्तियों के माध्यम से मैन्युअल रूप से लूप करना होगा और सूचकांक द्वारा सेल को हटा देना होगा।

यह आपको 3 स्तंभ को हटाने के लिए एक अच्छा प्रारंभिक बिंदु देना चाहिए:

$("tr").each(function() { 
    $(this).filter("td:eq(2)").remove(); 
}); 
+0

यह काफी काम नहीं करता है। 'फ़िल्टर() '' t' तत्वों पर लागू होता है, न कि 'td' तत्व, इसलिए यह कुछ भी नहीं हटाता है। इसके बजाय आपको या तो $ (यह) .children() फ़िल्टर() 'या बेहतर' $ (यह) .find() 'करने की आवश्यकता है। – Mike

7

यह हैंडलर के लिए .delegate() का उपयोग करता है, और एक अधिक देशी दृष्टिकोण cellIndex का उपयोग करके सेल सूचकांक क्लिक किए गए पाने के लिए, और cells प्रत्येक पंक्ति से सेल खींचने के लिए।

उदाहरण:http://jsfiddle.net/zZDKg/1/

$('table').delegate('td,th', 'click', function() { 
    var index = this.cellIndex; 
    $(this).closest('table').find('tr').each(function() { 
     this.removeChild(this.cells[ index ]); 
    }); 
}); 
5

यह मेरे लिए ठीक काम करता है:

$(".tableClassName tbody tr").each(function() { 
    $(this).find("td:eq(3)").remove(); 
}); 
0

प्रत्येक पंक्ति से पहले कॉलम निकालें।

$('.mytable').find("tr td:nth-child(1)").each(function(){ 
    $(this).remove() 
}); 
1

आप स्थिर HTML है, तो (10 कॉलम के साथ तालिका पर विचार करें),

तो नीचे का उपयोग कर हेडर के साथ पहले कॉलम को हटा दें:

$('#table th:nth-child(1),#table td:nth-child(1)').remove(); 

अब नई तालिका 9 होगा कॉलम, अब आप संख्या का उपयोग कर किसी भी कॉलम को हटा सकते हैं:

$('#table th:nth-child(7),#table td:nth-child(7)').remove(); 
संबंधित मुद्दे