如何设置点击按钮值?
在我的html表单中,一组用户各自拥有单独的ID。用户是自动生成的,如果新的用户注册意味着他们进入列表。 与此同时,我将一个按钮保留为“邀请”。但是这个按钮id设置为整个用户。如果我保持单击按钮提醒,它会将整个用户设置为警报消息。
EX: 如果John作为一个用户并且id为5,如果我单击John的邀请按钮意味着,对于所有用户,警报即将到来。 我需要的是,如果约翰邀请我点击意味着约翰只需邀请并非所有用户。
我如何比较这些用户ID和按钮ID?
这是一个代码:
<script>
$(document).ready(function(){
$(".InviteTeacher").click(function(){
alert('Invited');
});
});
</script>
<div class="thumb_section bx-def-margin-sec-right">
__thumbnail__
</div>
<div class="button_wrapper">
<input type="button" value="Invite" name="InviteTeacher" class="InviteTeacher" id= "InviteTeacher"/>
</div>
此处缩略图是用户信息。
答案 0 :(得分:2)
将值存储在隐藏的输入中。
<form>
<input type="hidden" name="from_id" value="1">
<input type="hidden" name="to_id" value="5">
<input type="submit" value="Invite">
</form>
答案 1 :(得分:0)
在生成按钮的位置
$("#button" + userId).click(function(){
//do this
})
答案 2 :(得分:0)
假设#invite0,#invitein1,#invitese2,...是邀请用户[0],用户[1],用户[2],...和doInvite(j)的按钮的html id属性一个函数将邀请用户[j]。
您需要将当前i值绑定到doInvite函数,以获取实际的处理程序。 见https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/bind
请注意,doInvite(i)是错误的,现在会在for循环中邀请它们而不按下按钮。而function(){doInvite(i)}是错误的,因为在调用事件处理程序时我会改变。
但是bind将为我们创建一个新函数,其中i的循环值填充到函数的第一个参数中。然后可以将其称为事件处理程序。
for(var i=0; i<users.length; ++i){
$('#invite'+i).click(doInvite.bind(null, i));
}
或者也可以使用闭包
编写for(var i=0; i<users.length; ++i){
$('#invite'+i).click( (function(j){
return function(){
doInvite(j);
}
})(i) );
}
在这种情况下,i的循环值存储在由顶部匿名函数创建的新范围内,在其j参数内。您可以将anonoymos函数的这种嵌套视为每次循环时返回稍微不同的事件处理函数。 j都存在于它们自己的作用域中,并随着循环的进展存储值0,1,2,3,....
有关循环中闭包和事件处理程序设置的另一个示例,请参阅Event handlers inside a Javascript loop - need a closure?
有关闭包的更多信息以及它们的作用,请参阅How do JavaScript closures work?