现在越来越多的朋友喜欢将jQuery和ASP.NET AJAX 一起来用,最近,许多印度人在forum里抱怨说UpdatePanel和jQuery不兼容,许多jQuery效果在UpdatePanel更新之后就 不work。本篇通过分析两者的框架结构来解决这个兼容性问题。

问题重现: 1. 在页面中添加ScriptManager和UpdatePanel2. 在UpdatePanel中添加元素A3. 用jQuery对元素A添加X效果4. 在UpdatePanel中加一个Button B用作postback 结果:在第一次页面加载时,元素A的X效果正常,点击B之后,页面局部刷新,此时,元素A失去X效果

分析1:UpdatePanel

UpdatePanel在应用中主要用于局部刷新,避免整个页面的Postback。

UpdatePanel实现局部刷新的核心在于MicrosoftAjaxWebForm.js文件,它的局部刷新过程就是将页面提交到服务端(包 含ViewState),执行服务端代码后异步将在UpdatePanel内的HTML进行重新呈现。

在此过程中,页面的其它部分并没有状态更改。

分析2:jQuery

可以通过简单的代码对 HTML元素添加各种属性和事件句柄,我们可以在这里看到官方的文档:

Tutorials:How jQuery Works

http://docs.jquery.com/How_jQuery_Works

在这里,我们可以得知,jQuery有个重要的事件标记“ready”,一般 对HTML元素的效果和事件句柄都通过这个ready事件来添加,如下:

$(document).ready(function () {

$("p").text("The DOM is now loaded and can be manipulated.");

});

官方对此的说明是:ready事件会在DOM完全加载后运行一次,OK,至此,问题的原因差不多明白了:

原因:

因为在UpdatePanel局部刷新之后,其中的元素A被重写,而此时整个DOM树并没有重新加载,所以jQuery的ready事件并没有触 发,所以元素A就失去了原有的特效。

解决方案:

我们可以将ready事件中执行的代码提取出来,然后通过捕获ScriptManager的EndRequest事件,在每次 UpdatePanel局部刷新之后执行一次jQuery初始化代码,如下所示:

function load() {

Sys.WebForms.PageRequestManager.getInstance().add_endRequest(EndRequestHandler);

}function EndRequestHandler() {

ReadyFunction1();

ReadyFunction2();

ReadyFunction3();

}

updatepanel失效怎么办_[转]jquery与updatepanel二次失效问题解决方案-阿里云开发者社区...相关推荐

  1. apache camel 相关配置_使用apache camel从表中选择数据-问答-阿里云开发者社区-阿里云...

    我希望能够使用Camel连续轮询数据库以从表中选择数据.我已经在我的Spring Boot应用程序中配置了Camel.这是我正在使用的配置 build.gradle: implementation ' ...

  2. nacos 本地测试_本地调试和服务器调试都无法连通-问答-阿里云开发者社区-阿里云...

    本地调试和服务器调试都无法连通 anand 2018-11-20 16:30:31 4696 异常信息: com.alibaba.nacos.api.exception.NacosException: ...

  3. 阿里云rds mysql 并发_干货 | 浅析RDS MySQL 8.0语句级并发控制-阿里云开发者社区

    背景 为了应对突发的数据库请求流量.资源消耗过载的语句访问.SQL 访问模型的变化, 并保持 MySQL 实例持续稳定运行,阿里云RDS for MySQL 8.0所采用的AliSQL分支设计了基于语 ...

  4. mysql double 存储_关于MYSQL中FLOAT和DOUBLE类型的存储-阿里云开发者社区

    关于MYSQL中FLOAT和DOUBLE类型的存储 重庆八怪 2016-04-12 844浏览量 简介: 关于MYSQL中FLOAT和DOUBLE类型的存储 其实在单精度和双精度浮点类型存储中其存储方 ...

  5. python树莓派编程 沃尔弗拉姆_《 Python树莓派编程》——3.3 Python入门-阿里云开发者社区...

    本节书摘来自华章出版社<Python树莓派编程>一书中的第3章,第3.3节,作者:[美]沃尔弗拉姆·多纳特(Wolfram Donat)著韩德强 等译,更多章节内容可以访问云栖社区&quo ...

  6. xlsx模块 前端_纯前端利用 js-xlsx 之单元格样式(4)-阿里云开发者社区

    0.单元格样式: 样式属性 子属性 取值 fill patternType "solid" or "none" fgColor COLOR_SPEC bgCol ...

  7. python复工_手把手教你使用Python批量创建复工证明-阿里云开发者社区

    /1 前言/ 受疫情影响,2020年2月份.3月份企业复工需为员工开具复工证明.因本公司人数较多,复制粘贴工作量巨大,特此为行政同事写此小工具,现与诸位共享. /2 目标/ 1.实现批量将 Excel ...

  8. qiankun 传统项目配置_飞猪微前端实践:统一运营工作台的解决方案-阿里云开发者社区...

    作者:侑夕 飞猪一体化运营工作台一期工作经过 3 个月的开发终于内部开始使用,期间我们面向运营场景,基于微前端与 SDK 化的一体化集成方案,完成 4 大场景 10 余个平台的接入和配置打通,并对数百 ...

  9. drawstring 文本居中_从Graphics.DrawString()居中输出文本 -问答-阿里云开发者社区-阿里云...

    我正在使用.NETCF(Windows Mobile)Graphics类和将DrawString()单个字符呈现到屏幕的方法. 问题是我似乎无法使其正确居中.无论我为字符串渲染的位置的Y坐标设置什么, ...

  10. mysql join 索引 无效_ORACLE MYSQL中join 字段类型不同索引失效的情况-阿里云开发者社区...

    ORACLE MYSQL中join 字段类型不同索引失效的情况 重庆八怪 2016-12-29 780浏览量 简介: 关于JOIN使用不同类型的字段类型,数据库可能进行隐士转换,MYSQL ORACL ...

最新文章

  1. Spark Streaming实时计算框架介绍
  2. 百度2020Q3财报:“十四五”规划注入新动能,百度智能云驶入快车道
  3. 中国区块链应用市场将爆发,百度创新指数第一,位居“区块链应用市场领导者”
  4. 易混淆知识点(3):b和strong的真正区别在哪?
  5. Java 总结finalize()方法
  6. HTML页面加载顺序
  7. Java棘手面试问题
  8. 白板推导系列Pytorch-隐马尔可夫模型-概率计算问题
  9. 爱立顺m33+android+4.4.2,更美丽更流畅 爱立顺M33升级Android 4.4.2
  10. 一款自动生成唯一头像的开源代码库
  11. jupyter添加新的语言包
  12. 响应式餐饮牛杂小吃类网站源码 dedecms织梦模板 (带手机端)
  13. 一款仿古文本编辑器---edit.exe
  14. 病案编码员需要计算机的什么知识,病案编码员要怎么学习?
  15. AutodeskADN 微信公众号和我个人邮箱
  16. 计算机无法登录到你的账户,win10电脑无法登陆到你的账户怎么办?win10电脑无法登陆到你的账户相关讲解...
  17. 《强化学习周刊》第17期:ICLR-2021强化学习的最新研究与应用
  18. 【入门】算法初步1 排序
  19. 数字信号处理(一)绪论
  20. 怎样设定绩效考核指标

热门文章

  1. 使用File I/O类实现文件的读写操作
  2. 论文笔记_SLAM_综述十几篇_目录
  3. 机器学习课程笔记【十】- 混合高斯与期望最大化算法
  4. DB2之CLOB对象用法
  5. Python命令行模式下调试程序
  6. LeetCode之两个数组的交集
  7. jackson的简单实用实例(json)
  8. iOS-登陆界面 实现光标换行功能
  9. Code First 约定
  10. SQL Server 软件用户登录过程中常遇到的一些错误