JQuery函数只能触发一次

时间:2015-07-22 12:36:48

标签: jquery

我知道这是一个常见问题,但我没有找到解决问题的方法。

我有tableloop按钮来编辑每个特定的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按钮,而不是单独应用,因此一旦部分页面上传,它就不会再次上传。

1 个答案:

答案 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);
        }
    });
});