4

这看起来很简单,但我对 jQuery 的经验很少,我无法理解它。

假设我有一个动态生成的 HTML 表,并且在该表的每一行中都有一个链接:

<a id='edit'>Edit User</a>

现在,链接应该以每个用户的 ID 作为参数调用一个函数。我可以这样做:

<a id='edit' onClick='editUser(<?php echo $row['id']; ?>)'>Edit User</a>

但是我如何在 jQuery 中做到这一点?

我可以这样调用函数:

$('a#edit').click(function () {
      editUser()
      return false;
    });

但是如何将 ID 传递给这个函数呢?我知道我可以先将它粘贴到一个隐藏字段中,然后通过元素 id 从那里获取它,但肯定有更好的方法吗?

我意识到所有链接都会以这种方式具有相同的 id,所以我应该通过附加用户 id 来动态创建链接 id 吗?但是那我该如何调用 jQuery 呢?

4

3 回答 3

8

id 在整个 HTML 中必须是唯一的。所以你可以使用类选择器和 HTML5 data-* 属性:

<a class="edit" data-id="<?php echo $row['id']; ?>">Edit User</a>

接着:

$('a.edit').click(function () {
    var id = $(this).data('id');
    // do something with the id
    return false;
});
于 2012-05-10T09:50:08.970 回答
2

使用data-*属性传递参数。

<a class='edit' data-id='<?php echo $row['id']; ?>'>Edit User</a>

$('a.edit').click(function () {
   editUser($(this).data("id"));
   return false;
});
于 2012-05-10T09:50:07.693 回答
0

正如 Curt 提到的data-id,如果您使用的是 HTML5,那么这是要走的路。如果您使用的是 HTML4,我会在链接的 ID 中传递这个:

<a id='edit-321' class='edit'>Edit User</a>

然后你可以这样做(并使用event.preventDefault()而不是return false!):

$('a.edit').click(function (evt) {
   editUser($(this).attr("id").substring(5));
   evt.preventDefault();
});
于 2012-05-10T10:08:02.410 回答