这个JQuery在哪里错了?

时间:2009-03-10 21:03:30

标签: javascript jquery css-selectors

我想将click事件添加到`id =“violacao”:

的所有元素
$(document).ready(function () {
    jQuery('#violacao').click(function() {
        alert('teste');
    });
});

但只是第一个链接响应了点击。这是生成的HTML:

<tr>
  <td><a href="#" id="violacao">40954589</a></td>
  <td>Perda de Comunicação</td>
</tr>

<tr>
  <td><a href="#" id="violacao">88692020503</a></td>
  <td>Perda de Comunicação</td>
</tr>

当我尝试这种方式时:

jQuery("a").click(function() {
    alert('teste');
});

除了所有链接都受到影响外,它工作正常。有什么问题?

2 个答案:

答案 0 :(得分:19)

HTML中的ID应该是唯一的(每个文档一个)。将ID更改为类(并使用。而不是#),它应该可以工作。

答案 1 :(得分:1)

虽然史蒂夫梅森说这是真的,但实际问题并非如此。

如果您将ID更改为类,则问题仍然存在:所有链接都会受到影响。

相反,如果您的目标是影响单个&lt; A&gt;,则应执行以下操作之一:

a)为每个&lt; A&gt;分配唯一的ID,然后像你先做的那样做;或

b)分配类并使用:first selector:

jQuery("a.violacao:first").click( function (){
  alert('teste');
} );

这将适用于第一个与类violacao匹配的锚点。或者,如果要影响特定锚点,可以使用:eq(index)。

有关选择器的完整列表,请访问http://docs.jquery.com/Selectors