将jQuery click事件绑定到表的每一行上的每个锚标记的最佳做法是什么?

有一个列出用户的网格(只是html表),您可以通过单击删除链接删除特定用户。 我通常的做法是

     <a href="#" onclick="return deleteUser('');">      

但我想以非突兀的方式将点击事件附加到链接。 我的意思是,我不想在标签内指定javascript方法。 我不确定用jQuery实现它的最佳方法是什么,用参数传递绑定多个多个锚标签。

您可以在表上使用delegate()方法:

 $('#tableId').delegate('a', 'click', function(e) { e.preventDefault(); // get the user name deleteUser($(this).closest('tr').children(':first').text()); // or give the cell that contains the name a class // deleteUser($(this).closest('tr').children('.name').text()); }); 

这样,您只需注册一个事件处理程序。

对于性能和优化,您可以将单击处理程序附加到该表:

  <% foreach (var user in Model.Users) {%>  <% )%> 
<%= user.Name %> <%= user.Level %> <%= Html.Image("trash.gif") %>
$('#grid').click(function(e){ var source = $(e.target); if(source.is('.delete')){ //or source.hasClass('delete') var user = source.closest('tr').find('td.name').text(); deleteUser(user); e.preventDefault(); } });