我有 3 个具有相同 ID 的按钮...
您的 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 值在一个文档中只能使用一次。如果多个元素被分配了相同的 ID,则使用该 ID 的查询将只选择 DOM 中第一个匹配的元素。但是,不应依赖这种行为;具有多个元素使用相同 ID 的文档是无效的。
如果您查看 jQuery 源代码,您会发现当您$
使用 id selecor-( $("#id")
) 进行调用时,jQuery 会调用本机 javascriptdocument.getElementById
函数:
// HANDLE: $("#id")
} else {
elem = document.getElementById( match[2] );
}
虽然,在他们的规范中document.getElementById
没有提到它必须返回第一个值,这就是大多数(也许是全部?)浏览器实现它的方式。
演示