0

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%>
4

1 回答 1

2

您的 HTML 标记无效。你有这个循环:

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

但是,HTML 要求id值是唯一的。我想你看到的行为(jQuery 只找到第一个匹配元素)是特定于浏览器的,因为它是未定义的。

如果您的元素不是唯一的,解决此问题的最短路径可能是使用 aclass而不是id. 像这样的东西:

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

那么您的 jQuery 选择器将是:

$('.btn_comment')

这将选择每个匹配的元素。

自然,这假设您没有将其id用于其他任何事情。(而且,如果你是,你无论如何都会想要重新处理那个逻辑,因为标记是无效的。)

于 2012-05-14T00:44:06.800 回答