如何通过jquery比较id

时间:2013-07-15 09:17:05

标签: php javascript jquery html

如何设置点击按钮值?

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

此处缩略图是用户信息。

3 个答案:

答案 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?