2012-03-07 5 views
21

मैं अपनी साइट पर पेजिनेटेड टेबल जेनरेट करने के लिए jquery dataTables का उपयोग कर रहा हूं। मुझे एक ऐसी प्रक्रिया चलाने की ज़रूरत है जो किसी विशेष कॉलम से सभी डेटा को पकड़ ले। कुछ ऐसा:सभी सेल सामग्री प्राप्त करने के लिए डेटाटेबल्स तालिका के माध्यम से लूप

$('.testLink').click(function(){ 
      var cells = new Array(); 
      $('#myTable tr td').each(function(){ 
       cells.push($(this).html()); 
      }); 
      console.log(cells); 
     }); 

वह उदाहरण सब कुछ पकड़ लेता है लेकिन मुझे केवल टीडीएस के एक कॉलम से जानकारी की आवश्यकता होगी। मुझे लगता है कि मैं उस पंक्ति में सभी टीडीएस में कक्षा जोड़ कर ऐसा कर सकता हूं लेकिन मुझे यकीन है कि एक बेहतर तरीका है। यह एक बोनस प्रश्न है ..

लेकिन मैं वास्तव में जानना चाहता हूं कि डेटाटाबल्स के साथ काम करने के लिए इसे कैसे प्राप्त किया जाए? चूंकि स्क्रिप्ट पेजिंग में डालने के लिए अधिकांश तालिका छुपाती है क्योंकि यह फ़ंक्शन केवल उन कोशिकाओं को पकड़ता है जो दिखाई दे रहे हैं। मैंने fnGetData के साथ खेला लेकिन मुझे यह नहीं मिल रहा है। कोई विचार?

+0

क्या उद्देश्य है ... पंक्ति डेटा एपीआई से मुश्किल नहीं हो रही है और वहाँ बहुत बड़ा में होने की संभावना उदाहरण हैं पैकेज डाउनलोड करें .. पोस्ट विवरण और कोड प्रयास – charlietfl

+0

हाँ एक सरणी में सभी पंक्ति डेटा प्राप्त करने के बाद मुझे एक क्वेरी चलाने के लिए उस डेटा का उपयोग करने की आवश्यकता है। मैं एपीआई से घंटों तक सामान खोज रहा हूं और कोशिश कर रहा हूं लेकिन मुझे यह नहीं मिल रहा है इसलिए मैं एसओ को एक भंवर देना चाहता था। – Zac

उत्तर

45

सभी पंक्तियों पहुंचने के लिए, आप कर सकते हैं:

var rows = $("#myTable").dataTable().fnGetNodes(); 

आपके मामले में, यह काम करना चाहिए:

$('.testLink').click(function(){ 
     var cells = []; 
     var rows = $("#myTable").dataTable().fnGetNodes(); 
     for(var i=0;i<rows.length;i++) 
     { 
      // Get HTML of 3rd column (for example) 
      cells.push($(rows[i]).find("td:eq(2)").html()); 
     } 
     console.log(cells); 
    }); 
+1

वह सभी पंक्तियों को नहीं चाहता है। वह प्रत्येक नोड में एक विशिष्ट स्तंभ चाहता है। – Ohgodwhy

+4

@ ओहगोद्वी: ठीक है, अब यह है। – Diego

+0

हां! धन्यवाद, यह वही है जो मुझे चाहिए। – Zac

1

आप "EQ" चयनकर्ता का उपयोग करना चाहते हैं। यह

$("td").eq(3); // last one 
$("td").eq(2); //returns "2" 

मेक भावना का उपयोग करके फिर, "0" के सूचकांक पर शुरू होता है, इसलिए यदि आप है ..

<tr> 
    <td>0</td> 
    <td>1</td> 
    <td>2</td> 
    <td>3</td> 
</tr> 

?

http://api.jquery.com/eq-selector/

+6

जो एक पेजिनेटेड टेबल पर काम नहीं करेगा, दिखाई नहीं दे रहे पंक्तियां मौजूद नहीं हैं – charlietfl

6

यहाँ() एक विधि fnGetData का उपयोग कर

सबसे पहले जो सभी पंक्तियों दृश्य या नहीं होगा प्लगइन से डेटा प्राप्त है। प्रत्येक पंक्ति डेटा सरणी पर लूप, और सूचकांक = 1 (दूसरा सेल) धक्का नई सरणी

 oTable = $('#example').dataTable(); 

     var secondCellArray=[]; 
     $.each(oTable.fnGetData(), function(i, row){ 
      secondCellArray.push(row[1]); 
    }) 

    console.log(secondCellArray) 

सम्पादन में शामिल: काम कर डेमो ... कंसोल में देखने के बाद प्रस्तुत करना

http://live.datatables.net/apixiv/edit#javascript,html

4

jQuery.map के साथ संयुक्त fnGetData() एक कॉम्पैक्ट समाधान के लिए बनाता है। निम्नलिखित समारोह obj_dtable के n वें स्तंभ से सभी मूल्यों से युक्त एक आयामी सरणी वापस आ जाएगी?

function getDataTableColumn(obj_dtable,n) { 
    return $.map(obj_dtable.fnGetData(), function(val) { 
     return val[n]; 
    }); 
}; 
संबंधित मुद्दे