将参数传递给jQuery函数?

时间:2012-05-10 09:48:04

标签: php javascript jquery

这看起来非常简单,但我对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?

3 个答案:

答案 0 :(得分: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;
});

答案 1 :(得分:2)

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

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

$('a.edit').click(function () {
   editUser($(this).data("id"));
   return false;
});

答案 2 :(得分:0)

正如Curt所提到的,如果您使用的是HTML5,那么data-id就是您要走的路。如果你使用的是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();
});