大家好。
小弟最近在学习所谓的“不唐突的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>

解决方案 »

  1.   

    <a id="editLink" href="#" UserId="<%=User.UserId %>)">编辑用户</a>
        <script type="text/javascript">
            $(function () {
                $("#editLink").click(function () {
                    var id = this.UserId
                });
            });
        </script>
      

  2.   


    Sorry。
    您的方法可行,但我漏说了一点,我不太喜欢用自定义特性,所以我想寻找不用自定义特性的解决办法。
      

  3.   

    看里用的id就直接var userId = '<%=User.UserId %>';
    $("#editLink").click(function () {
                    //参数UserId如何确定呢?
                });
      

  4.   

    真糟糕,可能是我表达得不好。我用Id是为了方便举例,没想到把意思搞混了。
    我的意思是页面上显示了一个用户列表的情况下,如:
    <a href="#">编辑用户A</a><br/>
    <a href="#">编辑用户B</a><br/>
    <a href="#">编辑用户C</a><br/>
    预先是无法知道操作人要编辑哪个用户的,所以就无法预先定义变量:
    var userId = '<%=User.UserId %>';
    这种情况下怎么处理呢?
      

  5.   

    先不看代码怎么实现,理解楼主的需求<a href="#">编辑用户A</a>点击"编辑用户A"会触发 编辑用户A的事件,但是不知道用户A是谁。是这个意思吗?
      

  6.   


    您好,很感谢你继续关注我的问题。我给一段完整一点的代码吧:        <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自定义特性,我想知道有没有不用自定义特性的解决办法。
      

  7.   

    问题根据具体的环境,有着不同的解决办法。
    这个行吗?
    $("#tbUserList .editLink").click(function() {
        var cells = $(this).parent().parent().find("td");
        var userid = cells[0].innerText;
        alert(userid);
    });
      

  8.   

    href="#userID"  这个不是自定义的吧