Jquery .Click事件只触发循环中的第一个按钮

时间:2012-05-14 00:37:24

标签: jquery html asp.net-mvc

Jquery .click事件只触发第一个按钮!我循环浏览数据并在我的html页面上为每个按钮添加按钮,并希望每个按钮在单击时触发对话框..但只有第一个有效!其余的似乎没有点击事件。

$(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 个答案:

答案 0 :(得分:2)

您的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用于其他任何事情。 (而且,如果你是的话,你仍然想要重新使用那个逻辑,因为标记是无效的。)