如果我有onclick功能,如何获得触发事件的div?

时间:2016-11-07 16:04:19

标签: javascript jquery

鉴于此HTML代码:

<td role-id="@Model.Id">
    @Model.Name
    <div class='glyphicon glyphicon-edit update_user' onclick='UpdateRole()'></div>
</td>

点击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

3 个答案:

答案 0 :(得分:2)

更好的方法是使用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);
};
<td role-id="@Model.Id">
  @Model.Name
  <div class='glyphicon glyphicon-edit update_user' onclick='UpdateRole(this)'></div>
</td>

使用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);
<td role-id="@Model.Id">
  @Model.Name
  <div class='glyphicon glyphicon-edit update_user' onclick='UpdateRole(this)'></div>
</td>

答案 1 :(得分:1)

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

as.numeric(vect)
#[1] 1.1  NA 2.5  NA 3.0

您现在可以:

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

答案 2 :(得分:-1)

这很简单,你需要更新这一行。 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
});