5

いくつinputかあります...クラスのあるものとないものがあります。クラスは任意に割り当てられます (.error失敗したフォームの送信では、" " を使用して、アイデアを得ることができます)。

そのクラスが表示される最初のインスタンスの 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>

お気づきのように、タグにはerrorクラスもあります。selectしたがって、この特定のケースでは、要素がクラス「エラー」で初めて表示されるため、ID「lastName」を見つける必要があります。

ありがとう!

4

7 に答える 7

3

これを試して

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

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

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

undefinedid 属性がない場合、またはクラス「エラー」を含む要素がない場合、結果が生じる可能性があることに注意してください。

于 2012-12-17T12:12:48.267 に答える
2

この方法で見つけることができます:

 $('.error:first').attr('id');
于 2012-12-17T12:14:28.937 に答える
2

これはあなたが探しているものでなければなりません -

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

:firstセレクターと.attr()関数を使用しています。

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

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

同じクラス (入力と選択) の異なるタイプの複数の要素があるため、要素のタイプ (この場合は入力) を指定することもお勧めします -

$('input.error:first').attr('id');
于 2012-12-17T12:14:34.933 に答える
1

これを試して:

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

PS提案として、prop()jQuery 1.6+を使用している場合は、を使用してください

との違いを確認する最も簡単な方法.attr.prop、次の例です。

<input blah="hello">
  1. $('input').attr('blah'): 期待どおりに戻ります'hello'。ここで驚きはありません。
  2. $('input').prop('blah'): 戻りますundefined-- しようとしているからです[HTMLInputElement].blah-- そして、その DOM オブジェクトにはそのようなプロパティは存在しません。その要素の属性としてスコープにのみ存在します。[HTMLInputElement].getAttribute('blah')
于 2012-12-17T12:17:59.877 に答える
1

$('.error').first();クラスエラーのある最初の要素を返します。

于 2012-12-17T12:14:04.043 に答える
0
var yourID = document.getElementsByClassName('error')[0].id;
于 2012-12-17T12:12:58.657 に答える
-1

あなたが使用することができます

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

しかし、これはすべての入力に対して機能します。それらを div でラップして書き込むことをお勧めします。

$('div#%wrapper_id% input').first(function(){
    ...
}
于 2012-12-17T12:15:39.940 に答える