我知道这是由我的js中的无限循环引起的,但我无法解释自己的原因。我想要一行单击以触发同一行上的按钮。我正在尝试以下JQuery,但是当我点击一行时,我最终会在行点击功能内部进行无限循环。那是为什么?
$(document).on('pageinit', function (event) {
bindRowClick();
});
function bindRowClick() {
$('.orderTable').find('tr').click(function () {
var btnView = $(this).find('td.tdViewOrder').find('input[type=submit]:first');
btnView.trigger("click");
});
}
我在class=".orderTable"
<tbody>
和转发器的表格
<tbody>
<asp:Repeater ID="rptrOrderView" runat="server" OnItemDataBound="rptrOrderView_ItemDataBound" OnItemCommand="rptrOrderView_ItemCommand">
<ItemTemplate>
<tr class="hand">
<td class="title">
<asp:Label runat="server" ID="lblTdOrderNum"></asp:Label>
</td>
<td class="tdViewOrder">
<asp:Button runat="server" ID="btnViewOrder" Text="View" CssClass="btnViewOrder" SkinID="btnViewMiniB" CommandName="ViewOrder" />
</td>
</tr>
</ItemTemplate>
</asp:Repeater>
</tbody>
我知道这是一个非常常见的问题,但我仍然无法解决我的问题。
解
我已将event.stopPropagation();
添加到我的点击处理程序中,现在正在使用。
$(document).on('pageinit', function (event) {
bindRowClick();
$('.btnViewOrder').click(function (event) {
event.stopPropagation();
});
});
答案 0 :(得分:2)
这绝对是因为btnView.click
传播并最终触发tr
的点击事件 - 导致整个事情循环。
您需要做的是从event.stopPropagation()
的点击处理程序中调用btnView
(问题中不存在)。