我有以下HTML:
<button class="btn btn-xs btn-success m-t-xs invite_accept">Accept</button>
<button class="btn btn-xs btn-danger m-t-xs invite_decline">Decline</button>
<input type="hidden" value="<?php echo $notification['team_id']?>" class="team_id">
<input type="hidden" value="<?php echo $notification['invite_id']?>" class="invite_id">
现在,当按下接受按钮时,我有以下Javascript:
$('.notifications').on('click', '.invite_accept', function(){
accept_invite($(this).next('.team_id').val(), $(this).next('.invite_id').val());
});
然而,这会返回undefined
。
function accept_invite(team_id, invite_id){
alert(''+team_id+' '+invite_id);
}
有人能指出我正确的方向吗?我现在使用next
和find
答案 0 :(得分:5)
在您的上下文中.team_id
和.invite_id
不是当前元素的下一个(直接)兄弟。因此,您应该使用.siblings()
来实现您想要的目标。
尝试,
$('.notifications').on('click', '.invite_accept', function(){
accept_invite($(this).siblings('.team_id').val(), $(this).siblings('.invite_id').val());
});
答案 1 :(得分:0)
$(this)在click函数中指的是按钮而next()只返回相邻的控件。假设$(“。notifications”)是一个容器,所以你可以在容器中找到你的控件,如$(“。notifications”)。find(“。team_id”)。val()。