我知道这是一个常见问题,但我没有找到解决问题的方法。
我有table
个loop
按钮来编辑每个特定的tr
,当按下按钮时,它会加载带有表单的局部视图,然后再次按下时会填充表单的文本区域包含用户详细信息,我设置了.one
函数,以便仅在第一次单击按钮时加载部分,这样可以正常工作。
但是,如果在另一个用户上按下按钮,而不是使用新用户详细信息填充现有文本区域,则会再次调用部分视图,该视图显示空白,因此每次要在每个用户显示时都必须单击两次细节非常烦人。
表格
<table class="table">
<thead>
<tr>
//Table Headers
</tr>
</thead>
<tbody>
<!-- Render the details of each employee. -->
@foreach (var item in Model)
{
<tr>
<td><input type="button" class="btn btn-primary editUser" id="editUser" name="editUser" value="Edit" onclick="Hide_Div(NewUserDiv)" /></td>
//Some @Html.DisplayFor() calls
</tr>
}
</tbody>
</table>
JQuery的
$(".editUser").one("click", function editUsers() {
$.ajax({
url: '/Home/EditUser',
success: function (data) {
$('#EditUserDiv').html(data);
}
});
});
//This section is repeated numerous times for each value username/email etc.
$(".editUser").click(function () {
//find details
$('#txtUL').empty().append(insertText)
});
});
正如您所看到的,我有.one
函数,但由于按钮位于循环中(Table / tbody / tr),.one
函数适用于每个按钮。
如果您需要我澄清任何内容或者您想了解更多详情,请询问。 提前谢谢。
P.S一切正常,但我想这样做
$(".editUser").one("click", function editUsers() {
$.ajax({
url: '/Home/EditUser',
success: function (data) {
$('#EditUserDiv').html(data);
}
});
});
一起适用于所有.editUser
按钮,而不是单独应用,因此一旦部分页面上传,它就不会再次上传。
答案 0 :(得分:1)
如果我理解这一点,你需要一个布尔值来表明行动已经发生(因此不再这样做)
var isEditingUser = false;
$(".editUser").one("click", function editUsers() {
if(isEditingUser) return;
$.ajax({
url: '/Home/EditUser',
success: function (data) {
isEditingUser = true;
$('#EditUserDiv').html(data);
}
});
});