2010-03-30 17 views
5

की मैं एक पाठ इनपुट को मान्य करने के जब यह ध्यान केंद्रित खो देता है कोशिश कर रहा हूँ। मैं जानना चाहता हूं कि तालिका में कौन सी पंक्ति है। यह मेरे पास अभी तक है और यह अपरिभाषित के रूप में वापस आ रहा है। कोई विचार?पुनः प्राप्त तालिका पंक्ति सूचकांक वर्तमान पंक्ति

$("div#step-2 fieldset table tbody tr td input").blur(function() { 
    var tableRow = $(this).parent().parent(); 
    if ($.trim($(this).val()) == "") { 
     $(this).addClass("invalid"); 
     alert(tableRow.rowIndex); 
     $(this).val(""); 
    } else { 
     $(this).removeClass("invalid"); 
     checkTextChanges(); 
    } 
}); 

उत्तर

12

rowIndex एक डोम संपत्ति, न कि एक jQuery विधि है, तो आप अंतर्निहित डोम वस्तु पर यह कॉल करनी होगी:

tableRow[0].rowIndex 

या बस:

var row= this.parentNode.parentNode; 
alert(row.rowIndex); 

जब से तुम नहीं कर रहे वास्तव में बहुत ज्यादा के लिए jQuery का उपयोग नहीं कर रहा हूँ।

jQuery 1.4 में $(row).index() है, लेकिन यह भाई बहन को स्कैन करता है पता लगाने के लिए जो बच्चे तत्व संख्या यह अपनी मूल में है। यह धीमी है और इस मामले में जहां आप कई <tbody> रों में rowIndex के लिए एक अलग परिणाम वापस आ जाएगी।

+0

मैं लगभग सभी उम्मीदें खो की जाँच के लिए, लेकिन अपने जवाब मुझे बचाया समय हो सकता है। धन्यवाद एक गुच्छा –

0

closest('tr') कोशिश करता है, तो आप संस्करण 1.3+ हैं। यह अभिभावक() से बेहतर काम करेगा()। parent()

1

आप jQuery ऑब्जेक्ट पर DOM कोर विशेषता का उपयोग करने का प्रयास कर रहे हैं। इस प्रयास करें:

alert(tableRow[0].rowIndex);

@jandreas: W3C डॉक्स से: rowIndex of type long, readonly, modified in DOM Level 2 यह तार्किक क्रम में है और दस्तावेज़ क्रम में नहीं। rowIndex खाते वर्गों (ठेड, tfoot, या tbody) तालिका के अंदर में रखता है, सूचकांक, tbody पंक्तियों के बाद, tfoot पंक्तियों के बाद में पहली ठेड पंक्तियों का मौक़ा मिला।

.index() उन थैड आदि को खाते में नहीं ले जाएगा।

2
jQuery 1.4 के साथ

। * यदि आप index() method.

आपका का भी उपयोग करेंगे यह होने की जरूरत है तो थोड़ा और अधिक विशिष्ट है। इसके अलावा आपको closest विधि का उपयोग करना चाहिए, फिर कई माता-पिता() कॉल। $ (यह) कैश भी करें।

$("#step-2 fieldset table td input").blur(function() { 
    var that = $(this), 
     tableRow = that.closest('tr'); 
    if ($.trim(that.val()) == "") { 
     that.addClass("invalid"); 
     alert(tableRow.index()); 
     that.val(""); 
    } else { 
     that.removeClass("invalid"); 
     checkTextChanges(); 
    } 
}); 

भी चेतावनी एक बहुत अच्छा डिबगिंग उपकरण नहीं है, तो आप firebug

+0

आपके सभी सुझावों के लिए धन्यवाद! मैं 1.4 का उपयोग नहीं कर रहा हूं। * इसलिए मुझे इंडेक्स() विधि तक पहुंच नहीं है, मैंने हालांकि आपके बाकी सुझावों को लागू किया है +1 – Jon

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