UpdatePanel和jQuery不兼容 局部刷新jquery失效
更新時間:2013年09月09日 16:52:17 作者:
在做項目中發(fā)現(xiàn),在使用了UpdatePanel的地方,局部刷新后,jquery失效了,后來經(jīng)過搜索找到不錯的解決方法,在此與大家分享下,有類似問題的朋友可以參考下
在做項目中發(fā)現(xiàn),在使用了UpdatePanel的地方,局部刷新后,jquery失效了。
后來網(wǎng)上一查,才發(fā)現(xiàn),jquery中的ready事件會在DOM完全加載后運行一次,而當(dāng)我們實用了UpdatePanel,它只局部更新,并未重新加載頁面所有Dom,所以jquery中ready事件將不會再次執(zhí)行。所以,我們可以將ready事件中執(zhí)行的代碼提取出來,然后通過捕獲ScriptManager的EndRequest事件,在每次 UpdatePanel局部刷新之后執(zhí)行一次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("確定要更新這一列數(shù)據(jù)嗎?") == 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();
}
后來網(wǎng)上一查,才發(fā)現(xiàn),jquery中的ready事件會在DOM完全加載后運行一次,而當(dāng)我們實用了UpdatePanel,它只局部更新,并未重新加載頁面所有Dom,所以jquery中ready事件將不會再次執(zhí)行。所以,我們可以將ready事件中執(zhí)行的代碼提取出來,然后通過捕獲ScriptManager的EndRequest事件,在每次 UpdatePanel局部刷新之后執(zhí)行一次jQuery初始化代碼:
復(fù)制代碼 代碼如下:
//處理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("確定要更新這一列數(shù)據(jù)嗎?") == 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();
}
相關(guān)文章
asp.net javascript 文件無刷新上傳實例代碼
最近在寫C# .net代碼的時候,遇到一個上傳刷新的問題。2009-06-06aspnet_isapi.dll設(shè)置圖文方法.net程序?qū)崿F(xiàn)偽靜態(tài)
aspnet_isapi.dll設(shè)置圖文介紹.net的程序?qū)崿F(xiàn)偽靜態(tài),需要的朋友可以參考下。2009-11-11asp.net core 使用 TestServer 來做集成測試的方法
這篇文章主要介紹了asp.net core 使用 TestServer 來做集成測試,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-11-11Asp.Net二級域名共享Forms身份驗證、下載站/圖片站的授權(quán)訪問控制
我們平時一般在做圖片或者文件下載權(quán)限控制的時候基本都是控制到下載頁面的,當(dāng)你的下載地址暴露后,瀏覽者就直接可以通過文件地址進行下載了,這時候也就出現(xiàn)了我們常說的盜鏈2012-02-02IE10下Gridview后臺設(shè)置行高不起作用解決方法
GridView1.HeaderStyle.Height=17發(fā)現(xiàn)在IE10 中不起作用,經(jīng)過反復(fù)測試修改為e.Row.Cells[0].Height=17即可解決問題,有類似問題的朋友可以參考下哈2013-04-04asp.net 計劃任務(wù)管理程序?qū)崿F(xiàn),多線程任務(wù)加載
b/s模式下用程序?qū)崿F(xiàn)計劃任務(wù),一直是個不太好解決和管理的問題,當(dāng)然可以采用ajax 計時器的方法模擬form端的timer事件。2009-11-11