javascript - 无法在具有相同 ID 的元素上触发点击事件

标签 javascript jquery

你能帮我理解 - 我在哪里犯了错误吗?我有以下 html 代码:

<div id="container">
    <a href="#info-mail.ru" id="getInfo" onClick="return false;">Info mail.ru</a>
</div>
<div id="container">
    <a href="#info-mail.com" id="getInfo" onClick="return false;">Info mail.com</a>
</div>
<div id="container">
    <a href="#info-mail.net" id="getInfo" onClick="return false;">Info mail.net</a>
</div>

和以下 js 代码(使用 jQuery):

$('#getInfo').click(function(){
    alert('test!');
});

example here

“单击”事件仅在第一个链接元素上触发。但对其他人则不然。

我知道 html 页面中的每个 ID 应该只使用一次(但是 CLASS 可以使用很多次) - 但它只 应该(不是必须)据我所知。这是我问题的根源吗?

TIA!

upd:非常感谢大家的解释!:)

最佳答案

为此使用一个类(并在您的处理程序中返回 false,而不是内联):

<div id="container">
    <a href="#info-mail.ru" class="getInfo">Info mail.ru</a>
</div>
<div id="container">
    <a href="#info-mail.com" class="getInfo">Info mail.com</a>
</div>
<div id="container">
    <a href="#info-mail.net" class="getInfo">Info mail.net</a>
</div>

$('.getInfo').click(function(){
    alert('test!');
    return false;
});

http://jsfiddle.net/Xde7K/2/

您遇到此问题的原因是元素是通过 ID 使用 document.getElementById() 检索的,它只能返回一个元素。所以你只能得到一个,无论浏览器决定给你什么。

关于javascript - 无法在具有相同 ID 的元素上触发点击事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7627004/

相关文章:

jquery - 错误 TS2339 : Property 'modal' does not exist on type 'JQuery'

javascript - Webkit 控制台是否不知道如何在 KnockOut 中使用可观察对象?

javascript - 使用 JavaScript 使用 htmlOutput 元素作为导出的 PNG 文件的名称

javascript - 自定义 jquery 警报自动关闭

jquery - 迭代到元素数组

javascript - 在尝试使用 JQuery 删除某个类之前,我应该检查它是否存在吗

javascript - jQuery - 扩展 div 并且不让其他人移动

javascript - 让 JQuery-UI 日期选择器正确格式化初始日期

javascript - 动态添加&lt;meta/>标签

jquery - 如何在 body 内选择任意顺序的奇子?