0

如何设置点击按钮值?

在我的 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>

这里的缩略图是用户信息。

4

3 回答 3

2

将值存储在隐藏输入中。

<form>
    <input type="hidden" name="from_id" value="1">
    <input type="hidden" name="to_id"   value="5">
    <input type="submit" value="Invite">
</form>
于 2013-07-15T09:20:11.383 回答
0

在生成按钮的地方

$("#button" + userId).click(function(){

   //do this
})
于 2013-07-15T09:18:56.523 回答
0

假设 #invite0, #invite1, #invite2, ... 是按钮的 html id 属性来邀请 users[0],users[1],users[2],... 而 doInvite(j) 是一个函数在 users[j] 处邀请用户。

您需要将当前 i 值绑定到 doInvite 函数,以获取实际的处理程序。请参阅https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/bind

请注意,doInvite(i) 是错误的,它现在会在 for 循环中邀请他们,而无需按下按钮。并且 function(){ doInvite(i) } 是错误的,因为在调用事件处理程序时 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 参数内。您可以将匿名函数的这种嵌套视为每次在循环中返回略有不同的事件处理函数。j 都存在于它们自己的范围内,并随着循环的进行存储值 0,1,2,3,...。

有关循环中的闭包和事件处理程序设置的另一个示例,请参阅Javascript 循环中的事件处理程序 - 需要闭包吗?

有关闭包是什么以及它们的作用的更多信息,请参阅JavaScript 闭包如何工作?

于 2013-07-15T09:29:08.350 回答