2012-12-17 13 views
5

के पहले उदाहरण की आईडी खोजें मेरे पास कुछ input है ... कुछ कक्षाओं के साथ, कुछ बिना। वर्गों को मनमाने ढंग से असाइन किया गया है (".error" के साथ, एक असफल फ़ॉर्म सबमिट करने के लिए, आपको एक विचार देने के लिए)।कक्षा

मुझे उस प्रथम उदाहरण की आईडी कैसे मिलती है जहां वह वर्ग दिखाई देता है?

उदाहरण के लिए:

<input id="firstName" type="text" name="firstName" class="text" value="" /> 
<input id="lastName" type="text" name="lastName" class="text error" value="" /> 
<input id="email" type="text" name="email" class="text" value="" /> 
<select name="gender" class="error"> 
    <option value=""></option> 
    <option value="male">Male</option> 
    <option value="female">Female</option>       
</select> 

आप ध्यान दें हूँ के रूप में, वहाँ भी select टैग पर कोई error वर्ग है। इसलिए, इस विशेष मामले में मुझे आईडी "lastName" आईडी खोजने की आवश्यकता है क्योंकि यह पहली बार है जब वर्ग "त्रुटि" वर्ग के साथ प्रकट होता है।

धन्यवाद!

उत्तर

1

$('.error').first(); क्लास त्रुटि के साथ पहला तत्व लौटाएगा।

+0

धन्यवाद। मैं इसके साथ .position() का उपयोग करने में सक्षम था! – Eric

3

प्रयास करें इस

$('.error').first().attr('id') 

के रूप में, अन्य उत्तर में कहा गया सीएसएस चयनकर्ता :first का उपयोग कर:

$('.error:first').attr('id') 

ध्यान रखें कि परिणाम undefined हो सकता है अगर वहाँ कोई आईडी गुण है या नहीं तत्व 'त्रुटि'

0
var yourID = document.getElementsByClassName('error')[0].id; 
+0

'getElementByClassName' जेएस में मौजूद नहीं है! लेकिन 'getElementsByClassName' मौजूद है! –

+0

@ alex23 लेकिन कृपया अपनी आंखें खोलें! मेरी टिप्पणी स्पष्ट रूप से देखें: पी –

2

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

$('.error:first').attr('id'); 
2

यह होना चाहिए कि आप क्या देख रहे हैं -

var className = 'error'; 
$('.' + className + ':first').attr('id'); 

मैं :first चयनकर्ता और .attr() function उपयोग कर रहा हूँ।

  • :first - पहले मिलान किए गए तत्व का चयन करता है।
  • .attr() - मिलान किए गए तत्वों के सेट में पहले तत्व के लिए एक विशेषता का मान प्राप्त करें।

attr() फ़ंक्शन की परिभाषा को देखते हुए, आपको :first निर्दिष्ट करने की भी आवश्यकता नहीं हो सकती है। हालांकि मुझे लगता है कि चयनकर्ताओं के साथ आप वर्बोज़ के रूप में हमेशा बेहतर होना बेहतर है। यह पठनीयता में भी सुधार करता है।

जब से तुम एक ही कक्षा (इनपुट और चयन) के साथ विभिन्न प्रकार के अनेक तत्व है, मैं भी तत्व के प्रकार को निर्दिष्ट (इस मामले में, एक इनपुट) की सिफारिश करेंगे -

$('input.error:first').attr('id'); 
+2

एक टाइपो है: ': पहला') – Matthias

+1

@mat - इसके लिए धन्यवाद :) – Lix

-1

आप उपयोग कर सकते हैं

$('input').first(function(){ 
    $(this).attr(id); 
}); 

लेकिन यह सभी आदानों मैं सुझाव है कि आप उन्हें एक div में लपेट और लिखने के लिए काम करेंगे

$('div#%wrapper_id% input').first(function(){ 
    ... 
} 
+1

'पहला' पैरामीटर के रूप में कोई फ़ंक्शन नहीं लेता है। यह सिर्फ पहला चयनित तत्व देता है। – Dennis

1

इस प्रयास करें:

$(".error:first").prop('id'); 

पी.एस.

<input blah="hello"> 
  1. $('input').attr('blah'): अगर आप jQuery 1.6+

    सबसे आसान तरीका है .attr और .prop के बीच अंतर को देखने के लिए निम्न उदाहरण का उपयोग कर रहे है एक सुझाव के रूप में,, prop() का उपयोग देता है 'hello' जैसा सोचा था। यहां कोई आश्चर्य नहीं है।

  2. $('input').prop('blah'): रिटर्न undefined - क्योंकि यह [HTMLInputElement].blah करने के लिए कोशिश कर रहा है - और कि डोम वस्तु पर ऐसी कोई संपत्ति मौजूद है। यह केवल उस तत्व की विशेषता के रूप में मौजूद है, उदाहरण के लिए [HTMLInputElement].getAttribute('blah')