首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > PowerDesigner >

UpdatePanel跟jQuery不兼容

2013-09-10 
UpdatePanel和jQuery不兼容在做项目中发现,在使用了UpdatePanel的地方,局部刷新后,jquery失效了。后来网上

UpdatePanel和jQuery不兼容

在做项目中发现,在使用了UpdatePanel的地方,局部刷新后,jquery失效了。

后来网上一查,才发现,jquery中的ready事件会在DOM完全加载后运行一次,而当我们实用了UpdatePanel,它只局部更新,并未重新加载页面所有Dom,所以jquery中ready事件将不会再次执行。所以,我们可以将ready事件中执行的代码提取出来,然后通过捕获ScriptManager的EndRequest事件,在每次 UpdatePanel局部刷新之后执行一次jQuery初始化代码:

   //处理ajax和ScriptManager的冲突        function load() {            Sys.WebForms.PageRequestManager.getInstance().add_endRequest(EndRequestHandler);        }        function EndRequestHandler() {            $(function () {                $("tbody").find("input:checkbox").each(function (key, val) {                    $(val).click(function () {                        var cbxId = $(this).attr("id");                        var state = $(this).attr("checked");                        $.post("Ajax/UpdateStatus.ashx", { "id": cbxId, "isChecked": state, "fid": "SamID" }, isReturnStatus);                    });                });                $("thead").find("input:checkbox").click(                        function () {                            if (confirm("确定要更新这一列数据吗?") == true) {                                var cbxId = $(this).attr("id");                                var name = cbxId.substr(16);                                var v = "tbody ." + name + " input[type='checkbox']";                                if ($(this).attr("checked") == "checked") {                                    $(v).attr("checked", true);                                }                                else {                                    $(v).attr("checked", false);                                }                                var state = $(this).attr("checked");                                $.post("Ajax/UpdateStatus.ashx", { "id": cbxId, "isChecked": state }, isReturnStatus);                            }                            else {                                if ($(this).attr("checked") == "checked") {                                    $(this).attr("checked", false);                                }                                else {                                    $(this).attr("checked", true);                                }                            }                        });            });             initCheckedStaus();        }


热点排行