jQuery事件仅针对第一个命名元素触发

时间:2010-02-03 22:20:40

标签: jquery events

我有超链接,所有都被命名为'mylink'。它们都应该触发相同的事件,但只有名为'mylink'的第一个元素才会触发。我的代码如下:

 $(document).ready(function() { 
        $("#formID").validationEngine() 
        $('#mylink').click(function(e){ 
           var goto = $(this).attr('href'); //get the url 
           $.ajax({ 
              url: goto 
           }); //execute the href 
           e.preventDefault(); //prevent click
           $('#mylink').parent().parent().fadeOut("slow");
        }); 
    })

我哪里错了?

4 个答案:

答案 0 :(得分:7)

您无法重复使用“id”值。给定的“id”只能在页面上使用一次。

如果您需要影响多个元素,请使用“class”组件:

<div id="uniqueString" class="makeMeMoo makeMePurple makeMeClickable">
  <!-- whatever -->
</div>

答案 1 :(得分:5)

$(function(){
  $("#formID").validationEngine(); // don't forget your semi-colons
  $(".mylink").click(function(e){  // ID's should be unique, use classes instead
    e.preventDefault();
    $.ajax({ url: $(this).attr("href") });
    $(this).parent().parent().fadeOut("slow"); // refer to this as 'this'
  });
});

答案 2 :(得分:2)

你应该把它们改成一个类。

Read this

答案 3 :(得分:1)

我不知道它的效率更高,但是当你在那里时,按元素(#mylink)引用该链接也可能不是一个坏主意,否则jquery可能必须搜索整个该课程的文件。

 $('a.mylink').click(function(e) {