2012-12-17 12 views
5

私はいくつかのinputを持っています...いくつかのクラスでは、いくつかはありません。クラスは任意に割り当てられます(フォーム提出に失敗した場合は、「.error」と表示されます)。クラスの最初のインスタンスのIDを見つける

そのクラスが表示される最初のインスタンスのIDはどのようにして見つけられますか?例えば

<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クラスもあります。ですから、この特定のケースでは、idが "lastName"であるのは、要素がクラス "error"で初めて表示されるためです。

ありがとうございます!

答えて

1

$('.error').first();は、クラスerrorを持つ最初の要素を返します。

+0

ありがとう。これで.position()を使うことができました! – Eric

3

CSSセレクタ:firstを使用して、他の回答で述べたように、この

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

をお試しください:

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

結果は全くid属性が存在しない場合undefinedこと、あるいはまったくできていることに注意してくださいクラス 'error'を含む要素

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

「getElementByClassName」はjsに存在しません! 'getElementsByClassName'が存在します! –

+0

@ alex23あなたの目を開けてください!私のコメントを明確に見てください:P –

2

あなたはそれをこの方法を見つけることができます。

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

これは、あなたが探しているものでなければなりません - 私は:firstセレクタと.attr() functionを使用してい

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

  • :first - 最初に一致する要素を選択します。
  • .attr() - 一致する要素のセットの最初の要素の属性の値を取得します。

attr()関数の定義を見ると、:firstを指定する必要はありません。しかし、セレクタでできる限り冗長になる方が常に良いことがわかります。これにより、読みやすさも向上します。

あなたは同じクラス(入力および選択)と、異なる種類の複数の要素を持っているので、私も(この場合に入力)要素のタイプを指定する推薦する -

あなたが使用することができます
$('input.error:first').attr('id'); 
+2

':first') – Matthias

+1

@mat - ありがとうございました:) – Lix

-1

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

が、これはすべての入力 私はあなたがdiv要素でそれらをラップし、書き込み提案のために動作します

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

'first'はパラメータとしての機能を持ちません。これは最初に選択された要素を返します。 – Dennis

1

これを試してみてください:

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

P.S.をあなたはjQueryの1.6+に

を使用している場合.attr.propとの違いを確認する最も簡単な方法は、以下の例で、prop()を使用し、提案として:

<input blah="hello"> 
  1. $('input').attr('blah'):リターン'hello'予想通り。ここには驚きはありません。
  2. $('input').prop('blah')undefinedを返します。これは[HTMLInputElement].blahを実行しようとしているためです。そのDOMオブジェクトに対するそのようなプロパティは存在しません。その要素の属性としてスコープ内にのみ存在します。すなわち、
関連する問題