同じIDのボタンが3つあります...
無効なHTMLがあります。id
同じ属性値を持つページに複数の要素を含めることはできません。
仕様の引用:
7.5.2要素識別子:idおよびclass属性
id = name [CS]
この属性は、要素に名前を割り当てます。この名前は、ドキュメント内で一意である必要があります。
解決策:からid
に変更class
:
<button type="button" class="btn btn-primary xyz" value="1">XYZ1</button>
<button type="button" class="btn btn-primary xyz" value="2">XYZ2</button>
<button type="button" class="btn btn-primary xyz" value="3">XYZ3</button>
そしてjQueryコード:
$(".xyz").click(function(){
alert(this.value);
// No need for jQuery :$(this).val() to get the value of the input.
});
ただし、最初のボタンでのみ機能します
jQuery#id
セレクタードキュメント:
各id値は、ドキュメント内で1回だけ使用する必要があります。複数の要素に同じIDが割り当てられている場合、そのIDを使用するクエリは、DOMで最初に一致した要素のみを選択します。ただし、この動作に依存するべきではありません。同じIDを使用する複数の要素を持つドキュメントは無効です。
$
id selecor-( )を使用して呼び出すとわかるjQueryソースを見ると$("#id")
、jQueryはネイティブのjavascriptdocument.getElementById
関数を呼び出します。
// HANDLE: $("#id")
} else {
elem = document.getElementById( match[2] );
}
彼らの仕様ではdocument.getElementById
、最初の値を返さなければならないとは述べていませんでしたが、これはほとんどの(おそらくすべて?)ブラウザがそれを実装した方法です。
デモ