如果我有onclickfunction,如何获得触发事件的div?

鉴于此HTML代码:

 @Model.Name 

我需要在单击div时检索role-id

JS代码:

 function UpdateRole() { $("#ModalUser").show(); var role_id = $(this).parent().attr("role-id"); var user_id = $(this).parent().parent().attr("user-id"); console.log(role_id); console.log(user_id); }; 

这两个值都是undefined ,如果没有这个值,我怎么能获得role-id

更好的方法是使用jQuery事件绑定,但使用您的方法,从被调用的函数传递this上下文:

问题:在您的示例中, this不是调用事件的element ,而是window

 function UpdateRole(that) { $("#ModalUser").show(); var role_id = $(that).parent().attr("role-id"); var user_id = $(that).parent().parent().attr("user-id"); console.log(role_id); console.log(user_id); }; 
  @Model.Name 

使用jQuery event-binding

 function UpdateRole() { $("#ModalUser").show(); var role_id = $(this).parent().attr("role-id"); var user_id = $(this).parent().parent().attr("user-id"); console.log(role_id); console.log(user_id); } $('.update_user').on('click', UpdateRole); 
  @Model.Name 

您应该使用jQuery注册您的事件,这样可以更容易地找到调用元素:

 $('.update_user').click(UpdateRole); 

你现在可以:

 function UpdateRole() { var clickedElement = $(this); $("#ModalUser").show(); var role_id = clickedElement.parent().attr("role-id"); var user_id = clickedElement.parent().parent().attr("user-id"); console.log(role_id); console.log(user_id); }; 

这很简单,你需要更新这一行。 data- *是用于设置和获取数据的html5新属性

 $(".update_user").on("click",function(){ elm=$(this).parent().data("role-id"); elm // this element consist of role id, now you can use this variable });