如果我有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 });