2012-05-14 79 views
0

Jquery .click事件只触发第一个按钮!我通过数据循环并在我的html页面上添加按钮,并且希望每个按钮在点击时触发一个对话框。但是只有第一个按钮可以工作!其余的似乎没有点击事件。Jquery .Click事件只触发循环中的第一个按钮

$(document).ready(function() { 

$("#btn_comment").click(function() { 

    $("#createComment").dialog(
          { 
           modal: true, 
           height: 300, 
           width: 500, 
           buttons: { 
            "Create a Comment": function() { 
            var post_id = $(this).parent().attr("id"); 
            var desc_to_create = $("#txtComment").val(); 
            $.post("CreateComment", { "id": "", "username": "x", "post_id": post_id, "description": desc_to_create, "created": "" }, function (t) { 

              alert("Thank you! Your comment has been updated!!"); 
              location.reload(); 

             }) 


            }, 
            "Cancel": function() { 
             $(this).dialog("close"); 
            } 
           } 
          } 
          ); 
}) 

}) 
<tr id='<%= Html.Encode(item.id) %>'> 
     <td> 

      <%: Html.ActionLink("Details", "Details", New With {.id = item.id})%> | 
       <a href="javascript://" class="delete_btn">Delete</a> 

     </td> 
     <%-- <td> 
      <%: item.id %> 
     </td> 
     <td> 
      <%: item.username %> 
     </td> 
     <td> 
      <%: item.title %> 
     </td>--%> 
     <td> 
      <%: item.description %> 
     </td> 
     <td> 
      <input id="btn_comment" type="button" value="Add a Comment" /> 
     </td> 
     <td> 
      <div id="new_comment"></div></td> 
    </tr> 

<% Next%> 
+1

你有你的页面上有一个按钮,btn_comment的ID? ID必须是唯一的。 – j08691

+0

@ j08691你是对的。如果有不止一个,他应该使用一个班级。 – Norse

回答

1

你的HTML标记是无效的。你在一个循环中有这样的:

<input id="btn_comment" type="button" value="Add a Comment" /> 

然而,HTML要求id值是独特。我想象你所看到的行为(jQuery只发现第一个匹配元素)是特定于浏览器的,因为它是未定义的。

如果你的元素不是唯一的,解决这个问题的最短路径可能是使用class而不是id。事情是这样的:

<input class="btn_comment" type="button" value="Add a Comment" /> 

那么你的jQuery选择是:

$('.btn_comment') 

这将选择所有匹配的元素。

当然,这是假定你不使用id为别的。 (而且,如果你是,你会想反正重新的工作,因为逻辑标记是无效的。)

相关问题