jQuery   发布时间:2022-03-30  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了jQuery – click事件多次触发大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我在ASP.NET MVC中遇到了模态寡妇的奇怪问题.我创建了一个链接,负责显示模态窗口.模态窗口显示并包含一个按钮 – 保存按钮.我将click事件处理程序附加到此按钮以保存窗口的内容然后将其关闭.整个机制看起来就是这样

// this link shows up a modal window 
 @Html.ActionLink("Add","Add","Index",null,new { id = "actionLinkAdd" });
and javaScript
$(function () {
        debugger;
        $("#actionLinkAdd").on("click",function (event,action) { // attaching to click event
            debugger;
            event.preventDefault(); //disabling default handler
            var $dialog = $('<div></div>');
            var $url = $(this).attr('href');
            $dialog.empty();
            var $kendoWindow = $dialog.kendoWindow({ //window creating
                height: "200px",title: "Dodaj",visible: false,width: "200px",actions: ["Close"],content: $url // loading of the window's content (partialView)

            }).data("kendoWindow");
            $kendoWindow.center();
            $kendoWindow.open();

            function onButtonSaveClick(event) { 
                debugger;
                event.preventDefault();
                var $url = $('#target').attr("action");
                $.ajax({
                    url: $url,type: "POST",data: $('#target').serialize(),success: function (response) {
                        $("#btnSave").unbind("click");
                        $kendoWindow.close();
                        $kendoWindow.destroy();
                    },error: function (args) {
                        debugger;
                        $("#btnSave").unbind("click");
                        $kendoWindow.content(args.responseText);                  
                    }
                });
            }
            $('#btnSave').live("click",onButtonSaveClick); // attaching to click event on     save button in the modal window
        });
    });

一切都工作得很好.问题是函数onButtonClick()被激活了几次.例如,如果我打开模态窗口两次,这个函数也会被调用两次.这对我来说很奇怪,因为我关闭模态窗口,销毁它甚至取消绑定附加到btnSave的所有点击事件(我也尝试使用开启和关闭功能,但窗口的行为是相同的).这种行为可能是什么原因?

解决方法

或者甚至更好地移动绑定事件的线:

}
        $('#btnSave').live("click",onButtonSaveClick);
    });
});

因此下降一行:

}
    });
    $('#btnSave').live("click",onButtonSaveClick);
});

问题是你每次创建一个新的对话框时都会调用live,但是没有使用’unbind’取消绑定它.但是你不需要,你只需要在页面准备就绪时调用的最外层函数中使用live一次绑定,然后它将获取任何id =’btnSave’的任何单击.现在你不应该真正创建多个具有相同id的元素的对话窗口,你应该把类设置为’btnSave’,但这是另一个故事..

大佬总结

以上是大佬教程为你收集整理的jQuery – click事件多次触发全部内容,希望文章能够帮你解决jQuery – click事件多次触发所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: