2012-05-14 174 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爲別的。 (而且,如果你是,你會想反正重新的工作,因爲邏輯標記是無效的。)

相關問題