2012-01-28 17 views
6

में अंतिम पुनरावृत्ति प्राप्त करें मेरे पास निम्न कोड है जो मैं टेबल कॉलम के माध्यम से जा रहा हूं और यदि इसका अंतिम कॉलम मैं इसे कुछ अलग करना चाहता हूं। अभी अपनी हार्ड कोडित लेकिन कैसे मैं इतना बदल सकते हैं यह स्वचालित रूप से अपने अंतिम स्तंभप्रत्येक

$(this).find('td').each(function (i) { 
    if(i > 0) //this one is fine..first column 
    { 
     if(i < 4) // hard coded..I want this to change 
     { 
      storageVAR += $(this).find('.'+classTD).val()+','; 
     } 
     else 
     { 
      storageVAR += $(this).find('.'+classTD).val(); 
     } 
    } 
}); 
+1

तो, 'टीडी' टैग प्रत्येक पंक्ति में उपयोग किया जाता है, तो आप बहुत पिछले टीडी, या प्रत्येक पंक्ति में आखिरी टीडी चाहते हैं? – loganfsmyth

+0

मैं यहां से आया था कि Google शीर्षक शीर्षक के उत्तर की तलाश में है, जो कि ओपी की आवश्यकता से अधिक सामान्य है ... तो, कैसे पता चलेगा कि कौन सा $ .each (कुछ, फ़ंक्शन (...) का अंतिम पुनरावृत्ति है।) {...}); जब 'कुछ' एक वस्तु है, तो सरणी के बजाय? –

उत्तर

10

आप .each() कॉलबैक अंदर लंबाई के लिए उपयोग चाहते हैं, तो आपको बस लंबाई पहले से प्राप्त करने की आवश्यकता है ताकि यह आपके दायरे में उपलब्ध हो।

var cells = $(this).find('td'); 
var length = cells.length; 
cells.each(function(i) { 
    // you can refer to length now 
}); 
+0

var कुल = $ (यह)। ढूँढें ('टीडी') लंबाई; – Autolycus

+1

@Autolycus - लेकिन जब आप अन्य उपयोगों के लिए चयनकर्ता की आवश्यकता होती है तो पुन: गणना करने में कोई बात नहीं है - साथ ही jQuery ऑब्जेक्ट को भी सहेज सकता है ताकि आप इसे एक से अधिक बार उपयोग कर सकें। – jfriend00

-2

जानता है सब आप चाहते हैं अंतिम स्तंभ है, तो आप

$(this).find('td:last') 

उपयोग कर सकते हैं आप काम करने के लिए चाहते हैं अन्य कॉलम के साथ, जाना

$(this).find('td:last').addClass("last"); 
$(this).find('td').each(function() { 
    if ($(this).hasClass("last")) { 
     // this is the last column 
    } else { 
     // this isn't the last column 
    } 
}); 

के लिए आप data() बजाय addclass() उपयोग कर सकते हैं यदि आप उस से प्रसन्न हैं।

यदि सब आप अपने स्ट्रिंग के अंत में एक अल्पविराम नहीं है क्या करना चाहते हैं, तो आप सिर्फ यह बंद काट सकता है बाद में:

storageVAR = storageVAR.substr(0, (storageVAR.length - 1); 
6

यह अपने उद्देश्य की तरह दिखता है एक अल्पविराम मानों की सूची, क्यों नहीं आप मूल्यों को इकट्ठा करने और सरणी विधियों का उपयोग करते 'में शामिल होने' द्वारा अलग बनाने के लिए है?

var values = [] 
$(this).find('td .' + classTD).each(function(i) { 
    if (i > 0) values.push($(this).val()); 
}); 
storageVAR = values.join(','); 
1

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

var $this = $(this), 
    size = $this.size(); 

$this.find('td').each(function (index) { 

    // FIRST 
    if(index == 0) 
    { 

    } 
    // LAST 
    else if(index == size) 
    { 

    } 
    // ALL THE OTHERS 
    else 
    { 

    } 

}); 
+1

अंतिम 'सूचकांक === आकार -1' होगा। – jeremy