这看起来非常简单,但我对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?
答案 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();
});