<input>の属性名の値を取得します


134

jQueryを使用して入力タグの属性名の値を取得する方法。助けてください。

<input name='xxxxx' value=1>

回答:


270

入力にIDを付け、attrメソッドを使用します。

var name = $("#id").attr("name");

33

次のattrようにjQuery のメソッドを使用します。

alert($('input').attr('name'));

を使用attrして、2番目の引数を指定して属性値を設定することもできます。

$('input').attr('name', 'new_name')

18
var value_input = $("input[name*='xxxx']").val();

この投稿はコードが短いため、自動的に低品質として報告されています。それが問題をどのように解決するかを説明するテキストを追加することにより、それを拡張していただけませんか?
ガン-モニカを2014年

2
それは実際には問題を解決しません。OPは名前の値を取得しようとしています。これは、あなたがすでにそれを知っていることを前提としています。
felwithe

16

jQueryが強力なツールであることは否定できませんが、「要素の属性値を取得する」などの簡単な操作にjQueryを使用することは非常に悪い考えです。

現在受け入れられている回答から判断すると、ID属性を要素に追加し、それを使用してそれを選択できたと想定します。

これを念頭に置いて、2つのコードを示します。最初に、受け入れられた回答であなたに与えられたコード:

$("#ID").attr("name");

次に、バニラJSバージョンです。

document.getElementById('ID').getAttribute("name");

私の結果:

  • jQuery:300kオペレーション/秒
  • JavaScript:11,000kオペレーション/秒

ここで自分テストできます。「プレーンJavaScript」バージョンは35倍以上高速です、jQueryバージョンよりです。

さて、これは1つの操作に過ぎません。時間が経つにつれ、コードでより多くのことが行われるようになります。おそらく特に高度なものの場合、最適な「純粋なJavaScript」ソリューションの実行には1秒かかります。jQueryバージョンには30秒から1分ほどかかる場合があります。でかい!人々はそのために座るつもりはありません。ブラウザでさえ飽きてしまい、時間がかかりすぎるためにWebページを強制終了するオプションが表示されます。

すでに述べたように、jQueryは強力なツールですが、すべてに対する答え見なされませ


いい答えです、クロスチェックしたので、javascriptはjqueryよりも高速ですよね?
Rijo

質問されてから4年後にこの質問に回答しましたが、質問に答えていません。人はjQueryでそれを行う方法を尋ねました。jQueryを使用するかVanilla JSを使用するかはプログラマ次第であり、質問の範囲外です
Zachary Weixelbaum 2017年

バニラJS!?? 冗談ですが、私は30時間かけてバニラJSのハックを調査しました。
Basheer AL-MOMANI 2017年

おそらく開発者は知りません。jQueryのようなフレームワークがオーバーヘッドを引き起こすことを知っていました。しかし、jQueryを使用するときに、このような単純なタスクを第35因子で遅くすることを期待していませんでした...
Daniel

7

<input>最初に正しいものを選択するセレクターを作成する必要があります。理想的には、要素のIDを使用し、$('#element_id')そのコンテナのID $('#container_id input')または要素のクラスが失敗する$('input.class_name')

要素にはこれらの要素がなく、コンテキストもないため、要素の選択方法を説明するのは困難です。

適切なセレクターを見つけたら、attrメソッドを使用して要素の属性にアクセスします。名前を取得するには、$(selector).attr('name')whichを使用します(例では)'xxxxx'


5

より良い方法は、「this」を使用することです。「id」の名前が何であれ、それを使用します。「mytarget」というクラス名を追加する限り。

ターゲットを持つフィールドのいずれかが変更されると、そのフィールドの名前を含む警告ボックスが表示されます。スクリプト全体を切り取って貼り付けるだけで機能します!

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.8.0/jquery.min.js" type="text/javascript"></script>
<script>
$(document).ready(function() {
 $('.mytarget').change(function() {
var name1 = $(this).attr("name");
alert(name1);
 });
});
</script>

Name: <input type="text" name="myname" id="myname" class="mytarget"><br />
Age: <input type="text" name="myage" id="myage" class="mytarget"><br />

1
var theName;

theName = $("input selector goes here").attr("name");

1

値を使用して入力名を取得

 $('input[value="1"]').attr('name');

idを使用して入力名を取得

 $('input[class="id"]').attr('name');
   $('#id').attr('name');

クラスget入力名を使用

 $('input[value="classname"]').attr('name');
   $('.classname').attr('name');  //if classname have unique value

0

単一の要素を処理する場合idは、GenericTypeTeaの回答に記載されているセレクタを使用して、次のような名前を取得する必要があります$("#id").attr("name");

しかし、あなたが望むなら、私がこの質問を見つけたときに行ったように、特定のクラスのすべての入力名を含むリスト(私の例では、クラスのすべてのチェックされていないチェックボックスの名前を含むリスト.selectable-checkbox)は次のようにすることができます:

var listOfUnchecked = $('.selectable-checkbox:unchecked').toArray().map(x=>x.name);

または

var listOfUnchecked = [];
$('.selectable-checkbox:unchecked').each(function () {
    listOfUnchecked.push($(this).attr('name'));
});

0

入力タグにクラスを渡し、クラスを使用して名前の値にアクセスします。

<input class="test-class" name='xxxxx' value=1>

<script>
    $('.test-class').attr('name');
</script>

または、idを使用して値にアクセスすることもできます。

<input id="test-id" name='xxxxx' value=1>

<script>
    $('#test-id').attr('name');
</script>

-2

以下の行では、最初に 'currnetRowAppName'の値が文字列でスペースをとらない単一のコードを提供しないという問題に直面していました。したがって、その後、単一のコードを提供し'"+row.applicationName+"'、そのスペースも使用します。

例:

<button class='btn btn-primary btn-xs appDelete' type='button' currnetRowAppName='"+row.applicationName+"' id="+row.id+ >

var viewAppNAME = $(this).attr("currnetRowAppName");
alert(viewAppNAME)

これは正常に機能しています。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.