首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >不能在具有相同id的元素上触发单击事件

不能在具有相同id的元素上触发单击事件
EN

Stack Overflow用户
提问于 2011-10-02 14:40:02
回答 6查看 7.9K关注 0票数 5

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

代码语言:javascript
复制
<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):

代码语言:javascript
复制
$('#getInfo').click(function(){
    alert('test!');
});

这里的例子

"Click“事件仅在第一个链接元素上触发。但对其他人却没有。

我知道html页面中的每个ID应该只使用一次(但是可以使用很多次),但正如我所知道的,只有才应该使用(而不是必须)。这是我问题的根源吗?

蒂娅!

upd:向大家解释!:)

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2011-10-02 14:43:49

为此使用类(以及处理程序中的return false,而不是内联):

代码语言:javascript
复制
<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()检索元素,后者只能返回一个元素。所以你只能得到一个,不管浏览器决定给你什么。

票数 11
EN

Stack Overflow用户

发布于 2011-10-02 14:55:32

虽然根据规范,必须在任何文档中只有一个具有给定id的元素,但您可以通过以下方法绕过这条规则,以及如果使用jQuery,则document.getElementById()所产生的后果问题:

代码语言:javascript
复制
$('a[id="getInfo"]').click(function() {
    alert('test!');
    return false;
});

JS Fiddle演示

但是,求你了,不要。尊重规范,当他们被跟踪的时候,他们会让每个人的生活变得更容易。以上是一种可能性,但正确地使用html对我们大家来说都要好得多。并减少浏览器引擎( jQuery或JavaScript本身)内任何未来更改的影响。

票数 4
EN

Stack Overflow用户

发布于 2011-10-02 14:44:19

您可以对多个元素使用相同的id (尽管页面不会验证),但是不能使用id查找元素。

document.getElementById方法只返回给定id的单个元素,因此如果要查找其他元素,则必须遍历所有元素并检查它们的id。

jQuery用来为选择器查找元素的Sizzle引擎在给定一个选择器(如#getInfo )时使用getElementById方法查找元素。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7627004

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档