大家好。
小弟最近在学习所谓的“不唐突的javascript”方面的内容,有个疑感是在事件绑定的时候如果需要传递动态加载的参数时应该怎样处理呢?
比如以前这样的代码:<a id="editLink" href="#" onclick="javascript:editUser('<%=User.UserId %>')">编辑用户</a><script type="text/javascript">
function editUser(userId) {
//编辑用户代码
}
</script>
如果用“不唐突的javascript”原则,则像下面这样写:
<script type="text/javascript">
$(function () {
$("#editLink").click(function () {
//参数UserId如何确定呢?
});
});
</script>
小弟最近在学习所谓的“不唐突的javascript”方面的内容,有个疑感是在事件绑定的时候如果需要传递动态加载的参数时应该怎样处理呢?
比如以前这样的代码:<a id="editLink" href="#" onclick="javascript:editUser('<%=User.UserId %>')">编辑用户</a><script type="text/javascript">
function editUser(userId) {
//编辑用户代码
}
</script>
如果用“不唐突的javascript”原则,则像下面这样写:
<script type="text/javascript">
$(function () {
$("#editLink").click(function () {
//参数UserId如何确定呢?
});
});
</script>
<script type="text/javascript">
$(function () {
$("#editLink").click(function () {
var id = this.UserId
});
});
</script>
Sorry。
您的方法可行,但我漏说了一点,我不太喜欢用自定义特性,所以我想寻找不用自定义特性的解决办法。
$("#editLink").click(function () {
//参数UserId如何确定呢?
});
我的意思是页面上显示了一个用户列表的情况下,如:
<a href="#">编辑用户A</a><br/>
<a href="#">编辑用户B</a><br/>
<a href="#">编辑用户C</a><br/>
预先是无法知道操作人要编辑哪个用户的,所以就无法预先定义变量:
var userId = '<%=User.UserId %>';
这种情况下怎么处理呢?
您好,很感谢你继续关注我的问题。我给一段完整一点的代码吧: <table id="tbUserList">
<tr class="tbTitle">
<td>用户帐号</td>
<td>用户姓名</td>
<td>用户E-mail</td>
<td>编辑</td>
<td>删除</td>
</tr>
<% foreach (var user in Model)
{ %>
<tr>
<td><%:user.UserId %></td>
<td><%:user.UserName %></td>
<td><%:user.Email %></td>
<td><a class="editLink" href="#">编辑用户</a></td>
<td><a class="deleteLink" href="#">删除用户</a></td>
</tr>
<%} %>
</table>假如这么一个javascript函数: function showEditDialog(userId){
//这个函数接受userId(用户编号)参数,并弹出编辑该用户的界面。
}我要做的就是,当用户点击了class为editLink的链接时,就执行showEditDialog(userId)函数。主要的问题就是,在用“不唐突的javascript ”原则下,无法把参数userId传递给这个函数。
其实在一楼已经解决了这个问题,但需要定义多一个UserId自定义特性,我想知道有没有不用自定义特性的解决办法。
这个行吗?
$("#tbUserList .editLink").click(function() {
var cells = $(this).parent().parent().find("td");
var userid = cells[0].innerText;
alert(userid);
});