2011-02-18 22 views
5

मेरे एचटीएमएलJquery एक तालिका पंक्ति

<TR class="datarow" id="rowId"><TD>1</TD><TD>895171</TD><td class="classID"><INPUT type="checkbox" /></TD></TR> 

मैं कैसे पता लगाने के लिए इस विशेष पंक्ति में चेकबॉक्स या चेक नहीं किया गया है कि क्या jQuery का उपयोग कर अंदर एक चेकबॉक्स पाते हैं। मान लें कि मैं अद्वितीय पंक्ति आईडी जानता हूँ।

वर्तमान में, मैं इस

var checkbox = $('#' + rowId + " td input:checkbox"); 

     if (checkbox.checked) { 
      alert("checked"); 
     } else { 
      alert("unchecked"); 
     } 

कर रहा हूँ लेकिन यह जब चेकबॉक्स चयनित है पता लगाने के लिए प्रतीत नहीं होता।

संपादित मजे की बात है, निम्नलिखित या तो काम नहीं किया:

 var curRow = $('#' + curRowId); 
     var checkbox = $(curRow).find('input:checkbox').eq(0); 



     if (checkbox.checked) { 
      alert("checked"); 

     } else { 
      alert("unchecked"); 

     } 

उत्तर

9

आप ऐसा कर सकते हैं:

var isChecked = $("#rowId input:checkbox")[0].checked; 

चेकबॉक्स के लिए एक वंशज चयनकर्ता उपयोग करता है, तो कच्चे डोम तत्व हो जाता है, और उसके checked संपत्ति पर लग रहा है। चयनकर्ताओं के लिए

संदर्भ:

  • चयनकर्ता सबसे ब्राउज़र द्वारा समर्थित: CSS 2.1
  • नए चयनकर्ताओं (डोम के साथ बातचीत के लिए) कुछ ब्राउज़र द्वारा और विभिन्न JavaScript लाइब्रेरी द्वारा समर्थित: CSS3 Selectors
+0

एर, और उपरोक्त गायब संदर्भ: [jQuery द्वारा समर्थित अतिरिक्त चयनकर्ता] (http://api.jquery.com/category/selectors/) –

+0

यह काम कर रहा है! क्या आप इसे हल करने के तरीके पर समाधान प्रदान कर सकते हैं यदि यह नहीं है? मुझे लगता है कि यह #confused – Notflip

+0

@MiguelStevens नहीं ढूंढ रहा है: बस 'चेक' संपत्ति को 'सत्य' या 'झूठा' असाइन करें। –

4

अपडेट किया गया:

var rowId = ""; 
var checked = $("#" + rowId + " input:checkbox")[0].checked; 

क्योंकि आप एक पर checked कॉल कर रहे हैं आपका मूल कोड काम नहीं करता jQuery परिणाम सेट। आपको वास्तविक डीओएम तत्व प्राप्त करने की आवश्यकता है, जिसे आप get() पर कॉल करके (या ऑब्जेक्ट को सीधे जे.जे. के उत्तर में अनुक्रमणित करके) कर सकते हैं। चूंकि केवल एक ही परिणाम है, आप परिणाम सेट में इंडेक्स 0 पर तत्व चाहते हैं।

संपादित ओपी में अपडेट किए गए कोड को देखने के बाद:

eq()का उपयोग निर्दिष्ट सूचकांक पर एक करने के लिए मिलान तत्वों कम कर देता है। प्रभावी रूप से यह एक मिलान किए गए ऑब्जेक्ट के साथ एक jQuery परिणाम सेट लौटाएगा - जिसे आपने निर्दिष्ट इंडेक्स पर अनुरोध किया था। यह अभी भी एक DOM तत्व नहीं लौटाता है, जिसे आपको checked संपत्ति का उपयोग करने की आवश्यकता है।

+0

'.is (": चेक किया गया)) - ** वाह ** यह लंबा रास्ता है 'दौर ... –

+0

@ टीजे। पाउडर: सहमत, उत्तर अद्यतन। –

+0

@Andrew: 'get (0) 'एक लंबा रास्ता' दौर भी है। ;-) –

0

यह

var checked = $("#rowId" + rowId + " td.classID input:checkbox").is(":checked"); 
1

आप केवल प्रति पंक्ति एक चेकबॉक्स है, तो यह सबसे तेज तरीका

!!$('#rowId input:checked').length 

तुम भी छोड़ सकते हैं है !! और '> 0' के खिलाफ जांचें लेकिन मुझे लगता है !! वास्तव में तेज़

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