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