你能帮我理解一下-我是在哪里犯的错误吗?我有以下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!');
});
"Click“事件仅在第一个链接元素上触发。但对其他人却没有。
我知道html页面中的每个ID应该只使用一次(但是类可以使用很多次),但正如我所知道的,只有才应该使用(而不是必须)。这是我问题的根源吗?
蒂娅!
upd:向大家解释!:)
发布于 2011-10-02 06:43:49
为此使用类(以及处理程序中的return 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;
});
出现此问题的原因是ID
使用document.getElementById()
检索元素,后者只能返回一个元素。所以你只能得到一个,不管浏览器决定给你什么。
发布于 2011-10-02 06:55:32
虽然根据规范,必须在任何文档中只有一个具有给定id的元素,但您可以通过以下方法绕过这条规则,以及如果使用jQuery,则document.getElementById()
所产生的后果问题:
$('a[id="getInfo"]').click(function() {
alert('test!');
return false;
});
但是,求你了,不要。尊重规范,当他们被跟踪的时候,他们会让每个人的生活变得更容易。以上是一种可能性,但正确地使用html对我们大家来说都要好得多。并减少浏览器引擎( jQuery或JavaScript本身)内任何未来更改的影响。
发布于 2011-10-02 06:44:19
您可以对多个元素使用相同的id (尽管页面不会验证),但是不能使用id查找元素。
document.getElementById
方法只返回给定id的单个元素,因此如果要查找其他元素,则必须遍历所有元素并检查它们的id。
jQuery用来为选择器查找元素的Sizzle引擎在给定一个选择器(如#getInfo
)时使用getElementById
方法查找元素。
https://stackoverflow.com/questions/7627004
复制