2010-02-03 51 views
3

我有超链接,全部命名为'mylink'。他们都应该发射相同的事件,但只有名为“mylink”的第一个元素实际上会触发。我的代码如下:只针对第一个命名元素的jQuery事件

$(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"); 
     }); 
    }) 

我在哪里出错了?

+0

@Josh:批评可以更具建设性。 – Sampson 2010-02-03 22:31:44

回答

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' 
    }); 
}); 
+0

完美,谢谢。 – 2010-02-03 22:28:48

+0

@GeorgeJohnston:记住'id ='foo''应该只出现在一页上。但'class ='foo''可以出现很多次。所以你只能有一个'',但是很多''。祝你好运! – Sampson 2010-02-03 22:29:48

7

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

如果需要影响多个元素,使用“类”成分:

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

你应该改变他们的一类。

Read this

+0

如在,Link? – 2010-02-03 22:23:27

+0

不,如Link 2010-02-03 22:27:14

1

我不知道,这一切都让更有效率,但同时你在那里,它可能不是一个坏主意,通过元素(#myLink的),还引用了该链接,否则jQuery的可能有搜索整个文档的类。

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